温故而知新-对象的上转型对象

首先简单解释下什么叫对象的上转型对象:
    假设A类是B类的父类,当用子类(B类)创建一个对象b时,并把这个对象b的引用放到父类(A类)的对象a中时,这时就称对象a是对象b的上转型对象。
    例如现有A类是B类的父类:  
    A a;
    a=new B();

    
    A a;
    B b=new B();
    a=b;
    为什么要这么做,因为有时候我们需要用的是A类,但同时需要B类的一些功能。

    详见代码:

Anthropoid.java

public class Anthropoid {
	int m=5;
	void speak(String s){
		System.out.println(s);
	}
}

People.java

//继承Anthropoid类
public class People extends Anthropoid {
    //m值改变并且新增了一个成员变量n
	int m=6;
	int n=7;
	//重写speak方法
	void speak(String s){
		System.out.println("******"+s+"******");
	}
	//新增一个calculate方法
	void calculate(int a,int b){
		int c=a+b;
		System.out.println(a+"+"+b+"="+c);
	}
}

Example3_1.java

public class Example3_1 {
	public static void main(String[] args) {
		Anthropoid monkey;
		People people=new People();
		monkey=people;                     //对象的上转型对象,monkey是people的上转型对象
		monkey.speak("It is a test");      //上转型对象调用的是子类重写的speak方法 
		//monkey.n=100;                    //非法,因为n是子类新增的成员变量
		//monkey.calculate(11,22)          //非法,因为calculate是子类新增的方法
		System.out.println(monkey.m);      //操作隐藏的m,不同于people.m
		System.out.println(people.m);      //操作子类的m
	}
}

从中可以看到:
(1)上转型对象不能操作子类新增的成员变量,也不能调用子类新增的方法。
(2)上转型对象可以访问子类继承或隐藏的成员变量,也可以调用子类继承或重写的方法。

代码中有详细的注释,有兴趣的朋友可以自己运行试试,如有问题可随时留言哦。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值