Java_基础_面向对象知识点小结
-
1-匿名对象:没有名字对象 new 类名()
- 1-1 调用方法
- 1-2作为方法参数和返回值传递
-
2-继承
- 2-1格式: extends
- 2-2 特点;
- a 类支持单继承、多层继承
- 2-3 子类继承父类成员特点
- 父类定义非私有成员变量,子类可以直接使用
- 成员方法
- 必须继承
- 方法名 参数列表一致
- 父类方法返回值可以是子类返回值类型或其父类
- 方法权限修饰符大于等于父类
- 构造方法
- 子类可以调用父类构造方法,在子类构造方法中存在默认super()
- 调用父类成员变量
- super.父类成员变量名
- super.方法( 实参)
-
3- this 和super
- this 表示子类对象空间
- 记录对象地址
- 区分成员变量和局部变量
- 调用本类构造方法this(实参)调用语句必须在构造方法第一行
- super属于父类空间标识
- 作用
- 调用父类成员变量
- 调用父类成员方法
- 构造方法super(实参)不能和this(实参)共存
- 作用
- this 表示子类对象空间
-
Static
- 修饰符:修饰成员变量、成员方法
- 特点:直接使用类名调用
- 静态代码块:读取项目配置文件
- 随着类的加载而执行,只执行一次
- 细节:
- 静态成员变量
- 使用类名调用,类一加载到内存方法区就初始化值,可以直接使用,且可以被多个对象共享
- 静态成员方法
- 使用类名调用
- 静态使用
- 静态中只能使用静态内容
- 非静态中能使用静态的,非静态需要创建对象
- 静态成员变量
-
Final
- 修饰符,可以修饰类,方法,变量,修饰的内容都不能改变
- 修饰的类:不能有子类
- 修饰的方法:不能被重写
- 修饰的变量
- 局部变量 不能改变
- 成员变量:常量,单词大写
- 赋值
- 直接final int NUM = 3;
- 构造方法初始化
- 赋值
-
权限修饰符
- public:跨包、跨类
- protected:子父类
- 默认:同包,同一类
- private:只有本类
-
抽象类
- public abstract class 类名{抽象方法}
- 注意
- 抽象类必须由子类继承,在子类中重写抽象方法
- 抽象类不能创建对象,需要创建子类
-
接口
-
定义格式
public interface{ public static final 数据类型常量名= 数值; public abstract 返回值类型 方法名(参数列表); public default 返回值类型 方法名(参数列表){} public static 返回值类型 方法名(参数列表) }
-
类和接口关系
- 一个类可以实现多个接口
- 一个类先继承父类再实现接口
- 注意:如果父类和接口存在一样的方法,先使用父类方法
-
接口和抽象类的区别
- 抽象类描述共性内容,可以有构造方法,不能创建对象
- 接口没有构造方法,描述扩展,不能创建对象
-
-
枚举
- 定义格式
public enum 枚举类{ 属性,属性... }
-
细节
-
枚举中的属性都是枚举类对象
-
属性是被static final修饰
-
使用枚举类属性:枚举类.属性名
-
属性默认调用无参构造,想调用有参构造:属性(实参)
-
枚举类中构造方法都是私有的
-
使用在switch语句中:
switch(枚举类.属性名){ case 属性名://不用书写枚举类调用 }
-
枚举类是被final修饰
-
-
多态
-
父类引用或者父接口引用指向子类对象
-
多态成员前提
- 必须有继承或实现
- 必须重写父类的方法 存在意义
- 格式:父类引用指向子类对象
-
成员特点
- 非静态成员方法:编译看左边,运行看右边
- 非静态成员变量:无多态性
-
多态弊端:不能使用子类特有的,想使用需要使用向下转型,转型会发生类型转换异常
父类引用类型变量名 instanceof 子类类型
-
优势
- 扩展性强
- 减少代码重复性
-
多态+面向接口编程
-
-
内部类
-
匿名内部类
new 父类或父接口(){ 重写父类或父接口中的方法 }
-
成员内部类
Person.Heart p = new Person().Heart();
-
-
隐式三步
- 调用父类构造super()
- 显示给非静态成员变量初始化
- 执行构造代码块
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了