java 父类引用指向子类对象

1. 无论是泛型还是普通父类引用指向子类对象,父类引用可见范围都是父类自己的变量或函数

2. 说明见注释

代码如下:父类

package com.atguigu.spring.beans;

public class Father {
	
	public String fatherName;
	
	public String fatherGetName(){
		return "";
	}
	
	public void sonUnImplementMethod(){
		
	}
}
子类
package com.atguigu.spring.beans;

import java.util.ArrayList;
import java.util.List;
/**
 * 
 * @author jaloLi
 * @usage 综上所述(无论泛型,还是普通引用),如果父类引用指向子类对象,父类引用可见范围都是父类自己的变量或函数
 *
 */
public class Son extends Father{
	
	public String sonName;
	
	public Son(String name){
		this.sonName = name + fatherName;//正确,子类直接使用,父类的字段
		sonUnImplementMethod();//正确,子类直接使用,父类的函数,即使子类未实现的父类函数,子类也可以调用
		
	}
	
	@Override
	public String fatherGetName() {
		return super.fatherGetName() + sonName;
	}
	
	public String sonGetName() {
		return sonName;
	}
	public static void main(String args[]){
		List<Father> list = new ArrayList<Father>();
		Son son = new Son("aaa");
		Son son1 = new Son("bbb");
		Son son2 = new Son("ccc");
		list.add(son);
		list.add(son1);
		list.add(son2);
		System.out.println(list.get(0).fatherGetName());//正确,list 中是father 类引用,father 引用的可见范围只是子类的继承函数
		System.out.println(list.get(0).sonGetName());//错误,father 类引用无法引用非继承函数
		System.out.println(list.get(0).fatherName);//正确,father 引用的可见范围只是子类的继承字段
		System.out.println(list.get(0).sonName);//错误
	}
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值