多态之向上转型和向下转型

版权声明:本文为博主原创文章,未经博主允许不得转载。 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()

结果:          父类
                    子类
                    重写方法
                    子类方法

子类对象将子类中重写父类的内容全部更改,未改的继承父类。

但是,向上转型的代价是:牺牲了那些子类有而父类没有的方法。


  向上转型的优点:减少重复代码编写工作量。

  举个栗子:         填写一个英语四六级表格:同一个学校同一个班级的学生,除了(姓名、学号、身份证号)不同外,(学校名、专业、报考地点等等等)很多信息一样,那向上转型就是将一样的信息打印好,就不需要一个个填写了。


向下转型:

 完全为了转型而转型。。。

猜你喜欢

转载自blog.csdn.net/qq_37334150/article/details/78954075
今日推荐