封装

目的

  • 限制外部访问,使某些方法和属性无法被外部访问

实现

  1. 通过作用域控制属性和方法可访问性
  2. 将属性设置为private,通过gettersetter进行访问
  3. 限定参数取值范围
e.g.
1
2
3
4
5
6
7
8
9
private int age;  //age为私有变量,外部不可直接访问
//getter,通过该方法返回age,避免直接访问age
public void getAge(){
return age;
}
//setter,通过该方法设置age,限定取值范围,避免直接设置age
public void setAge(int age){
self.age = age > 0 ? age : 0;
}

继承

  • 包含父类非private的所有属性和方法,并可扩展自己的方法

声明

声明
1
2
3
class 类名 extends 父类{

}

限制

  1. 不能继承私有成员
  2. 只能单继承

调用

  • 在初始化子类时,会先调用父类的构造方法

重写(Override)

  • 父类的某方法无法满足要求时,可重写该方法。

声明

  • 该方法的声明需与父类的返回类型相同,参数相同,作用域不小于父类该方法的作用域。(private < default < public)详见作用域

super

  • 调用父类的某方法

    e.g.
    1
    super.hello();//调用父类的hello方法
  • 注意与重载的区别

多态

  • 在继承的基础上,对父类的某个方法进行自定义重写,这样对于调用它的方法来说,只需要将参数设置为该父类即可

转型

向上转型

  • 将子类转为父类,自动转型

    父类 对象名 = 子类对象

向下转型

  • 将父类转为子类,需强制转换,只有曾经是该子类才能转换

    子类 子类 = (子类)父类对象

instanceof

  • 确定该对象是不是某类