封装
访问控制权限又成为“封装”,是面向对象三大特征中的一种。核心是,只对需要的类可见。
继承
继承是所有OOP(Object Oriented Programming)语言和Java语言都不可或缺的一部分。
只要创建一个类,就隐式继承自Object父类。如果指定了父类,那么父类就继承于Object类。
多态
指的是同一个行为具有多个不同表现形式。多态的实现具有三种重要条件:
- 继承
- 重写父类方法
- 父类引用指向子类对象
public class Fruit {
int num;
public void eat(){
System.out.println("eat Fruit");
}
}
public class Apple extends Fruit{
@Override
public void eat(){
super.num = 10;
Ststem.out.println("eat " + num + " Apple");
}
public static void main(String[ args]){
Fruit fruit = new Apple(); // 这就是多态,父类引用指向子类对象,因为Apple继承于Fruit,并且重写了eat方法,所以能够表现出来多种状态的形式。
fruit.eat();
}
}
组合
就是将对象引用放在新类中。组合是提高类对的复用性的一种方式。如果希望类更具有扩展性,多用组合,少用继承。
public class dinner {
private String name;
private Fruit fruit;
}
public class Fruit {
private String name;
private String color;
}
代理
除了继承和组合外,另外一种关系模型成为“代理”。
A想要调用B类的方式,A不直接调用,A会在自己的类中创建一个B对象的代理,再有代理代用B的方法。
向上/向下转型
- 向上转型:通过子类对象(小范围)转化为父类对象(大范围),这种转换是自动完成的,不用强制。
- 向下转型:通过父类对象(大范围)实例化子类对象(小范围),这种转换不是自动完成的,需要强制指定。
static
static是Java中的关键字,它的意思是“静态的”。可以用来修饰成员变量、方法、代码块。
- 静态成员变量,也称为类变量。类变量的生命周期和类相同,在整个应用程序的执行期间都有效。
- 静态方法,该方法可以直接通过“类型.方法名”进行调用。静态方法中不能访问类的非静态成员、方法。
- 静态代码块,用于类的初始化操作。进而提升程序的性能(静态代码块随着类的加载而执行,很多时候将只需要进行一次的初始化操作放在static代码块中)。
final
代表最终的,不可改的。用来修饰类、变量、方法。
- final修饰类时,表面这个类不可被继承。final类中方法,会被隐式的final修饰。
- final修饰方法时,表面这个方法不能被子类重写。
- final修饰变量时,有来两种情况。
- 修饰基本数据类型,表示该数据类型的值不可被修改。
- 修饰引用类型,表示该引用不可再指向另外一个对象。