1) 封装概念:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问,封装是为了保护数据。
2) 封装的好处:
a) 只能通过规定的方法访问数据
b) 隐藏类的实现细节
c) 方便加入控制语句
d) 方便修改实现,提高代码的可维护性
e) 可进行数据检查,从而有利于保证对象的完整性
1) 继承特点:Java中的继承是单继承机制,通过extends关键字实现继承,实现继承的类被称为子类,被继承的类被称为父类也称其为基类、超类。子类和父类是一种特殊与一般的关系。子类是一种特殊的父类,或者说父类包含的范围要比子类包含的范围大。
2) 继承优点:可以减少重复代码的编写,提高工作效率。另外,在程序中通过使用继承,可以延续现实生活中两类对象之间的这种特殊的“继承”关系
3) 继承带来的问题:增加了两个类之间的耦合,破坏了父类的封装
4) 父类只能看到自己传给子类的属性和方法,看不到子类扩展的属性和方法。
5) 创建对象的过程(子类)
a) 分配空间(父类对象空间、子类对象空间)
b) 递归构造父类对象
c) 初始化属性
d) 调用构造方法
6) 子类可以在构造方法指定调用父类无参有参的构造方法,默认调用无参的构造方法
7) Super( )调用父类构造方法的语句,必须放在子类构造方法第一句
1) 在一个子类中,重写父类的方法,这种形式称为方法覆盖。主要要求如下:
a) 子类的方法和父类的方法名称一致(包括:参数类型、参数数量,参数次序,方法返回值均一致),但方法体不同。
b) 子类调用覆盖的方法时,优先调用子类的同名方法。
c) 使用@Override注解,可以更加严格的约束子类的方法覆盖。
2) 在一个子类里,对父类的方法进行重写,也就是对方法赋予了新功能。这种情况称为方法的覆盖,也称为重写(Override)。
3) 方法的覆盖的要求:
a) 子类中覆盖的方法必须和父类对应方法,名称一致,参数列表一致,返回值一致。
b) 重写的方法不能缩小被重写方法的访问权限
c) 就近原则:子类的对象访问覆盖后的方法,不再访问父类的对应方法
Java中访问修饰符
修饰符 | 访问范围 | 是否能被继承 |
private | 本类内部 | 不能被子类继承 |
default | 本类内部+同包的其他类 | 不能被继承 |
protected | 本类内部+同包的其他类+非同包子类 | 能被继承 |
public | 公开、能被所有类访问 | 能被继承 |
注:private(权限)实际上能继承,但看不到相当于没有被继承
Java引用变量有两个类型,一个是编译时的类型,一个是运行时的类型,编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定,如果编译时类型和运行时类型不一致,就会出现所谓的多态。
1) 多态三个必要条件:
a) 要有继承(实现implements)
b) 要有重写(overwrite&override)
c) 父类引用指向子类对象
2) 多态:重载、重写、抽象类、接口都是多态的表现。
3) 多态:不同的对象对同一个命令作为自己不同行为
注:instanceof运算符判断某个复合变量(对象)是否属于某种类型,如果是,表达式返回true,否则为false,在进行强制类型转换之前,使用instanceof运算符进行一下判断,可以提高代码的安全性。
注:如果一个类的成员变量是其他类的变量那么必须先实例化该成员变量
5. 静态代码块,非静态代码块,构造方法执行顺序
1) 父类--静态代码块
2) 子类--静态代码块
3) 父类--非静态代码块
4) 父类--构造函数
5) 子类--非静态代码块
6) 子类--构造函数