父类
public class Uncle {
private String name;
private int age;
public void fahongbao(){
System.out.println("大舅发红包");
}
}
子类一:
System.out.println("大舅发红包");
}
public void songyan(){
System.out.println("大舅喜欢送烟");
}
}
子类二:
public void fahongbao(){
System.out.println("二舅发红包");
}
}
多态
UncleOne dajiu = new UncleOne();
dajiu.fahongbao(); //大舅发红包
UncleTwo uncleTwo = new UncleTwo();
uncleTwo.getName(); //二舅发红包
向上转型
UncleOne dajiu1 = new UncleOne();
dajiu1.fahongbao(); //大舅发红包
向下转型
UncleOne dajiu1 = new UncleOne();
dajiu1.fahongbao();
// dajiu1.songyan(); // 会报错 子类独有的方法会无法再父类中使用
UncleOne temp = (UncleOne) dajiu1; //向下转型
temp.songyan(); //可以调用子的方法
instancesof
判断对象是否是指定的类型的实例
避免发生错误的类型转换
public class Demo02 {
public static void main(String[] args) {
Uncle uncle1 = new UncleOne();
Uncle uncle2 = new UncleTwo();
if(uncle1 instanceof UncleOne){
UncleOne u1 = (UncleOne)uncle1;
u1.fahongbao();
}
if(uncle2 instanceof UncleTwo) {
UncleTwo u2 = (UncleTwo) uncle2;
u2.fahongbao();
}
}