(2)前提:
A:有继承或者实现关系。
B:有方法的重写。
C:有父类(接口)的引用指向子类对象。 Fu fu = new Zi();
Fly f = new Phone();
(3)多态中的成员使用特点:
A:成员变量
编译看左边,运行看左边。
B:成员方法
编译看左边,运行看右边。
class Fu {
int num=4;
void show() {
System.out.println("showFu");
}
}
class Zi extends Fu {
int num=5;
void show() {
System.out.println("showZi");
}
}
class T {
public static void main(String[] args) {
Fu f=new Zi();
System.out.println(f.num);
f.show();
}
(4)多态中的转型:
A:向上转型
Fu fz = new Zi();
把子类对象赋值给父类(接口)的引用
B:向下转型
Zi zi = (Zi)fz;
把父类(接口)的引用强制转换成子类对象
(5)多态的好处及弊端:
A:好处
提高了程序可维护性和可扩展性。
开闭原则:对扩展开放,对修改关闭。
B:弊端
不能使用子类特有内容。
要想使用,要么向下转型,要么重新创建子类对象。
(6)多态的三种形式:
A:具体的类多态
B:抽象类多态
C:接口多态
static
静态修饰符,可以修饰成员。静态修饰的成员可以使用类名直接调用。修饰的成员变量是所有对象共享的。是随着类的加载而加载,优于对象存在。
静态内容只能访问静态。
public static final修饰一个常量
final
最终修饰符
final修饰类 断子绝孙 不能被继承
final修饰成员变量 不能二次赋值 是常量
final修饰成员方法 子类不能重写