java 父类引用子类对象_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 list = new ArrayList();

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);//错误

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值