}
class Zi extends Fu{
public void show(){
System.out.println("B");
}
}
class Test{
public static void main(String[] args){
//多态
Fu fu = new Zi();
}
}
2.多态的成员特点:方法有重写,变量没有。
A:成员变量:
编译看左边,运行看左边
B:成员方法:
编译看左边,运行看右边
例题:class Fu{
int num = 10;
public void show(){
System.out.println("A");
}
}
class Zi extends Fu{
int num = 20;
public void method(){
System.out.println("C");
}
public void show(){
System.out.println("B");
}
}
class Test{
public static void main(String[] args){
//多态
Fu fu = new Zi();
System.out.println(num);//10
fu.show();//B
fu.method();//报错,编译时父类没有method方法
}
}
3.多台弊端:父类引用不能使用子类特有功能
关于转换:
基本数据类型:
a.隐式转换(小--->大) b.强制转换(大--->小)
引用数据类型:
a.向上转型(小--->大) b.向下转型(大--->小)
例题:class Fu{
int num = 10;
public void show(){
System.out.println("A");
}
}
class Zi extends Fu{
int num = 20;
public void method(){
System.out.println("C");
}
public void show(){
System.out.println("B");
}
}
class Test{
public static void main(String[] args){
//多态
Fu fu = new Zi();//向上转型
Zi z = (Zi)fu;//向下转型
System.out.println(num);//10
13.接口的成员特点:
成员变量:接口中只有常量,因为接口中的成员变量有默认的修饰符 public static final
推荐:永远手动写出修饰符
构造方法:接口中没有构造方法,接口不需要对数据初始化,因为接口被静态修饰,只有常量,不需要初始化
成员方法:接口中的方法都是抽象的,接口中的成员方法有默认的修饰符 public abstract 永远手动给出修饰符