版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37334150/article/details/78954075
向上转型:
将子类对象转换为父类对象 : Father f = new Son(); 这样产生的对象f,将会拥有父类的属性和子类的方法。当然,子类的方法复写了父类的方法,输出的结果自然是父类的。而f的属性却依旧是父类时候的属性值。举个栗子:
class Base{
public String bname = "父类";
public String sname;
public void method() {
System.out.println("父类方法");
}
public void test() {
}
}
class Sub extends Base{
public String sname = "子类";
public void method() {
System.out.println("重写方法");
}
public void test() {
System.out.println("子类方法");
}
}
public class 向上继承 {
public static void main(String[] args) {
Base b = new Sub();
System.out.println(b.bname);
System.out.println(b.sname);
b.method();
b.test();
}
结果: 父类
null
重写方法
子类方法
将Base b = new Sub()更改为Sub b = new Sub()
结果: 父类
子类
重写方法
子类方法
子类对象将子类中重写父类的内容全部更改,未改的继承父类。
但是,向上转型的代价是:牺牲了那些子类有而父类没有的方法。
向上转型的优点:减少重复代码编写工作量。
举个栗子: 填写一个英语四六级表格:同一个学校同一个班级的学生,除了(姓名、学号、身份证号)不同外,(学校名、专业、报考地点等等等)很多信息一样,那向上转型就是将一样的信息打印好,就不需要一个个填写了。
向下转型:
完全为了转型而转型。。。