-
封装
-
概念
尽可能隐藏对象内部的实现,限制用户对对象的操作和访问权限。
2.语法
private 访问修饰符 表示私有化
特征:只能在类的内部进行访问
修饰:属性 方法
使用:private 变量类型 变量名;
private 返回值类型 方法名(){}
3.封装之后的处理
提供公开的访问方式
GetXxx 属性值的获取
SetXxx 属性值的设置
private String name;
public String getName(){
return this.name;
}
public void setName(String name){
this.name=name
}
4.使用区别
封装前:
获取属性值: 对象名.属性名
设置属性值: 对象名.属性名=值
封装后:
获取属性值: 对象名.getXxx();
设置属性值: 对象名.setXxx(值);
5.注意:后续书写属性时都需要使用private修饰并且提供公开的set|get方法
-
继承
- 概念:类与类之间的关系 , 满足is a关系就可以实现继承关系 , 子类是一个父类
- 父类的抽取规则
功能描述越详细, 重合点越多, 越接近直接父类
功能描述越粗略, 重合点越少, 越接近Object(对象)
在一组相同或者类似的类中,抽取出共性的特征和行为,定义在父类中,实现重用。
3.语法
class 字类名 extends 父类名{ }
产生了继承关系后,子类既可以具备父类的特性和行为,又可以定义自己独有的特征和行为
4.Java继承关系【简单性体现】
Java是单继承 一个类只能有一个直接的父类
Java支持多级继承 父类还可以继承父类 相当于间接的成为当前类的父类
5.不能继承
- 构造方法
- private修饰的属性和方法
- 不同包时 default修饰的属性和方法
6.访问修饰符
控制成员的访问权限
7.方法覆盖
覆盖的概念:继承关系下父类功能满足不了子类的需求,需要对父类方法进行重写
要求:
1、返回值类型 方法名 参数表和父类方法完全相同
2、访问修饰符要和父类相同或者比父类更宽泛
3、子类方法不能抛出比父类更宽泛的异常
注解:@Override 注解 功能:强制校验方法覆盖是否成立 【了解】
方法重载:方法名相同,参数列表不同(个数、类型、顺序),和访问修饰符、返回值类型无关
8.super
super. 可以调用父类对象的属性或者方法
super()|super(参数) 可以在子类的构造方法中调用父类的构造方法
super()和this()不能同时使用,他们都要求放置在代码的第一行
子类构造方法中如果没有显示调用父类构造方法,默认添加super();
9.对象创建过程 创建子类对象时先创建父类对象
- 分配空间
- 初始化父类属性
- 调用父类构造方法
- 初始化子类属性
- 调用子类构造方法
-
三 ,多态【重点】
-
1.概念
父类引用指向[存储]子类对象
2.语法
父类型 引用名 = new 子类型();
3.注意
a、使用父类引用只能调用父类中声明的属性和方法,无法使用子类特有的属性和方法
b、如果子类覆盖了父类中的方法,调用时优先使用子类覆盖之后的方法
4.多态应用场景
- 父类引用可以作为方法的形参 接收子对象
- 父类引用可以作为方法的返回值类型 表示一些列子类对象
- 父类引用可以用于创建存放 多个子类型元素的数组
5.好处
- 降低程序的耦合度
- 屏蔽子类间的差异
6.装箱拆箱
装箱:将子类对象放置到父类引用中
Animal a = new Dog();
拆箱:将父类型引用中指向的子类型对象 转化为 原有的子类型
Dog d = (Dog)a;
使用场景:需要调用子类独有的属性和方法时需要拆箱(强转)
7.Instanceof
作用:用于判断当前对象|引用是否为指定类型 或者 是否为指定类型的子类型
语法:对象|引用 instanceof 类型