类与对象:抽象类、Object类和内部类

一.抽象类

1.概念

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类也是类,也具备类所拥有的特性。

2.语法规则

使用abstract来修饰抽象类,例子:

Shape shape=new Shape();   //代码会报错


 

public abstract class Shape {public abstract void draw();
}


3.特性

3.1 在抽象类里的抽象方法可以没有具体实现,但抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类;
3.2 如果一个类中有抽象方法,那么这个类必须是抽象类;

public abstract class Shape {public abstract void draw();
}
//还是刚刚的例子


3.3 抽象类不可以实例化;

Shape shape=new Shape();   //代码会报错


3.4 抽象方法不能被final和static修饰,抽象方法也不是private的。

二.Object类

1.概念

Object是Java默认提供的一个类。Object类是Java中所有类的父类。

2.类中的方法

方法描述
protected Object clone()创建并返回一个对象的拷贝
boolean equals(Object obj)比较两个对象是否相等
protected void finalize()当 GC (垃圾回收器)确定不存在对该对象的有更多引用时,由对象的垃圾回收器调用此方法。
Class<?>getClass()获取对象的运行时对象的类
int hashCode()获取对象的 hash 值
void notify()唤醒在该对象上等待的某个线程
void notify All()唤醒在该对象上等待的所有线程
String toString返回对象的字符串表示形式
void wait()让当前线程进入等待状态。直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。
void wait(long timeout)让当前线程处于等待(阻塞)状态,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过参数设置的timeout超时时间。
void wait(long timeout,int nanos)与 wait(long timeout) 方法类似,多了一个 nanos 参数,这个参数表示额外时间(以纳秒为单位,范围是 0-999999)。 所以超时的时间还需要加上 nanos 纳秒。

三.内部类

1.概念

一个类中嵌套了另一个类,例子:

public class OutClass {class InnerClass{}
}

注意:内部类和外部类共用同一个java源文件,但是经过编译之后,内部类会形成单独的字节码文件。

2.内部类的分类

2.1 实例内部类

2.1.1 创建

未被static修饰的成员内部类

public class OutClass {class InnerClass{}
}
public static void main(String[] args) {// 创建实例内部类对象OutClass.InnerClass innerClass1 = new OutClass().new InnerClass();//也可以先将外部类对象先创建出来,然后再创建实例内部类对象OutClass outClass = new OutClass();OutClass.InnerClass innerClass2 = outClass.new InnerClass();
}
2.1.2 注意事项

1. 外部类中的任何成员都可以在实例内部类方法中直接访问;
2. 实例内部类所处的位置与外部类成员位置相同,因此也受public、private等访问限定符的约束;
3. 在实例内部类方法中访问同名的成员时,优先访问自己的,如果要访问外部类同名的成员,必须:外部类名称.this.同名成员 来访问;

OutClass.this.InnerClass.XX


4. 实例内部类对象必须在先有外部类对象前提下才能创建;
5. 外部类中,不能直接访问实例内部类中的成员,如果要访问必须先要创建内部类的对象。

2.静态内部类

2.2.1 创建

被static修饰的内部成员类称为静态内部类。

public class OutClass{static class InnerClass{}
}
public static void main(String[] args) {// 静态内部类对象创建 & 成员访问OutClass.InnerClass innerClass = new OutClass.InnerClass();innerClass.methodInner();
}
2.2.2 注意事项

1. 在静态内部类中只能访问外部类中的静态成员;

2. 创建静态内部类对象时,不需要先创建外部类对象。


3.局部内部类

2.3.1 创建

定义在方法中的类,基本不用

public class OutClass {public void method(){class InnerClass{}}
}

2.3.2 注意事项

1. 局部内部类只能在所定义的方法体内部使用;

2. 不能被public、static等修饰符修饰;

4.匿名内部类

class Out {public void test() {}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/13756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

盲人社区生活支持体系:织就一张温暖的网

在当今社会&#xff0c;构建一个全面、包容的盲人社区生活支持体系成为了推动社会进步、保障残障人士权益的重要议题。随着科技的不断革新&#xff0c;一款名为“蝙蝠避障”的辅助软件走进了盲人的日常生活&#xff0c;它如同一位无形的向导&#xff0c;通过实时避障与拍照识别…

element DatePicker 日期选择器设置禁用未来日期,时间范围为60天

需要用到 DatePicker 里面的 picker-options 方法 disabledDate onPick方法 <el-date-pickerv-model"form.xxxx"type"daterange"value-format"yyyy-MM-dd":clearable"false":picker-options"pickerOptions"start-placeho…

运行Android项目时,提示错误: 程序包javax.annotation.processing不存在

今天在运行项目时提示错误: 错误: 程序包javax.annotation.processing不存在 import javax.annotation.processing.Generated; 最后是修改了Android Studio的JDK的路径修改为你安装的JDK路径&#xff0c;完成的修复&#xff1a;

5.23 Linux中超时检测方式+模拟面试

1.IO多路复用的原理&#xff1f; IO多路复用使得一个或少量线程资源处理多个连接的IO事件的技术。对于要处理的多个阻塞的IO操作&#xff0c;建立集合并存储它们的文件描述符&#xff0c;利用单个阻塞函数去监控集合中文件描述符事件到达的情况&#xff0c;&#xff08;如果到…

Web测试中的BUG定位与分析

在Web测试过程中&#xff0c;页面内容或数据显示错误、不显示等问题是常见的挑战。为了高效地定位并解决这些问题&#xff0c;我们可以利用浏览器自带的开发者工具、数据库等工具进行排查和分析定位BUG。 一、发现BUG 保存现场并复现&#xff1a;遇到问题时&#xff0c;首先截…

cPanel中如何移除之前添加的域名

我这边想要移除我之前绑定到主机的域名&#xff0c;但是不知道如何在主机上面进行移除&#xff0c;由于我使用的Hostease的Linux虚拟主机产品默认带普通用户权限的cPanel面板&#xff0c;但是不知道如何在cPanel上操作移除域名&#xff0c;因为也是对于Hostease主机产品不是很了…

技术驱动创新:淘宝扭蛋机小程序的技术实现与挑战

随着科技的飞速发展和人们生活方式的转变&#xff0c;小程序已经成为人们日常生活中不可或缺的一部分。淘宝扭蛋机小程序&#xff0c;作为一种集购物、娱乐于一体的新型电商模式&#xff0c;凭借其独特的创意和便捷的使用体验&#xff0c;受到了广大用户的喜爱。然而&#xff0…

Linux磁盘高级操作

RAID RAID存储系统是一种数据存储虚拟化技术&#xff0c;它将多个物理磁盘驱动器组合成一个或多个逻辑单元&#xff0c;以提供数据冗余和/或提高性能。 1. RAID 0 无奇偶校验与冗余&#xff08;磁盘容错&#xff09;的条带存储&#xff08;带区卷/条带卷&#xff09; 由两块…

基于windows通过kind部署轻量级便携式k8s集群

感谢老师的视频教程&#xff1a; 基于windows通过kind部署轻量级便携式k8s集群 wsl windows下的linux wsl --set-default-version 2 wsl --help wsl --list --online wsl --install -d Ubuntu wsl -l -v &#xff08;看看版本是不是2&#xff0c;否则docker那边识别不到&…

从零开始:在线教育系统源码与知识付费小程序开发指南

开发一个功能完善的在线教育系统和知识付费小程序并不是一件简单的事情。今天&#xff0c;小编将从零开始&#xff0c;详细介绍如何开发在线教育系统和知识付费小程序。 一、需求分析与系统设计 在开始编写代码之前&#xff0c;首先需要进行需求分析和系统设计。这一步非常关键…

理解Apache Storm的实际用途和应用场景

学习目标&#xff1a; 理解Apache Storm的实际用途和应用场景 学习内容&#xff1a; 1. 实时数据处理和分析 1.1 实时日志分析 公司可以使用Storm来实时处理和分析服务器日志。例如&#xff0c;电商网站可以实时监控用户行为日志&#xff0c;以检测异常活动&#xff08;如DD…

汽车摄像头智能画质增强解决方案,高品质车载视觉系统

在数字化与智能化浪潮的推动下&#xff0c;汽车行业正经历着一场前所未有的技术革命。其中&#xff0c;车载摄像头作为智能驾驶与安防监控的核心部件&#xff0c;其画质的高低直接关系到行车安全与驾驶体验。美摄科技&#xff0c;作为行业领先的智能图像技术解决方案提供商&…

网上的面经【面试准备】

网上的面经【面试准备】 前言版权推荐网上的面经【面试】腾讯广告后台开发一面字节跳动日常实习一面凉经数字马力 后端开发 一面二面面经&#xff08;社招&#xff09;阿里后台面试最新Java后端面经合集 | 阿里腾讯百度字节]最后 前言 2023-07-15 18:39:29 公开发布于 2024-5…

机器学习圣经PRML作者Bishop推出重磅教材

图1 书籍《Pattern Recognition and Machine Learning》 只要学人工智能的人&#xff0c;必然学机器学习。 只要学机器学习的人&#xff0c;必然看PRML。 PRML为何物&#xff1f; PRML全名《Pattern Recognition and Machine Learning》&#xff0c;一部机器学习领域的内功…

数据库系列之MySQL数据库中内存使用分析

在实际系统环境中&#xff0c;MySQL实例的内存使用随着业务的增长缓慢增长&#xff0c;有些时候并没有及时的释放。本文简要介绍下MySQL数据库中和内存相关的配置&#xff0c;以及分析内存的实际使用情况&#xff0c;以进行应急和调优处理。 1、MySQL内存结构 在MySQL中内存的…

Docker run 语句用法详解

docker run 是 Docker 命令中最核心的指令之一&#xff0c;用于根据指定的镜像创建并启动一个新的容器。本文将深入解析 docker run 的使用方法&#xff0c;包括其基本语法、选项参数以及一些高级用法&#xff0c;帮助你更高效地管理和运行 Docker 容器。 基本语法 docker ru…

MySQL索引和视图

MySQL索引和视图是关系型数据库MySQL中的两个重要概念。索引用于优化数据库的查询性能&#xff0c;而视图用于提供一个逻辑上的表结构&#xff0c;方便用户查询和操作数据。 索引是一种数据结构&#xff0c;可以加速对数据库表中的数据进行查询的速度。通过创建索引&#xff0…

激光雷达SLAM算法综述

大家好呀&#xff0c;我是一个SLAM方向的在读博士&#xff0c;深知SLAM学习过程一路走来的坎坷&#xff0c;也十分感谢各位大佬的优质文章和源码。随着知识的越来越多&#xff0c;越来越细&#xff0c;我准备整理一个自己的激光SLAM学习笔记专栏&#xff0c;从0带大家快速上手激…

BEVFusion的相机工作流中,图像编码之后FPN+ADP网络的作用

在BEVFusion的相机工作流中&#xff0c;图像编码之后会经过一个FPNADP的网络,那么这个结构的作用是什么呢 FPN大家都很熟悉&#xff0c;就是特征金字塔。但是这里还是贴一些来自GPT的废话 在Bird’s Eye View (BEV) 算法中使用的特征金字塔网络&#xff08;FPN, Feature Pyrami…

Clean Code 阅读笔记

初期未记录&#xff0c;待二次阅读。。。 Concurrency Keep your concurrrency-related code separate from other code.Take data encapsulation to heart; severely limit the access of any data that may be shared.Attempt to partition data into independent subsets …