多态的向上和向下转型
1.向上转型:
本质是父类的引用指向子类对象。
语法格式:
父类 父类引用 = new 子类();
将子类的对象赋值给了父类的引用,小范围(子类)转为大范围(父类)
自动转。
父类的引用可以调用父类的所有成员方法,可以调用子类的重写父类的方法。但是不能调用子类独有的方法
案例代码:
package com.july.note;
//
class AA {
public void show() {
}
}
class BB extends AA {
@Override
public void show() {
// TODO Auto-generated method stub
System.out.println("这是重写的AA的方法");
}
public void bb() {
System.out.println("这是BB独有的方法");
}
}
public class Demo3 {
public static void main(String[] args) {
AA aa = new BB();//向上转型
//可以调用重写的 或者父类中的方法 但是不能调用子类独有的方法
aa.show();
}
}
2.向下转型:
语法格式:父类类型 父类引用 = new 子类();
子类类型 子类引用 = (子类类型)分类的引用;//向下转型
案例代码:
package com.july.note;
//
class AA {
public void show() {
}
}
class BB extends AA {
@Override
public void show() {
// TODO Auto-generated method stub
System.out.println("这是重写的AA的方法");
}
public void bb() {
System.out.println("这是BB独有的方法");
}
}
public class Demo3 {
public static void main(String[] args) {
AA aa = new BB();//向上转型
//可以调用重写的 或者父类中的方法 但是不能调用子类独有的方法
//父类类型 父类引用 = new 子类();
//子类类型 子类引用 = (子类类型)父类的引用;向下转型
BB bb = (BB)aa;
aa.show();
//
bb.show();
bb.bb();
}
}
浙公网安备 33010602011771号