您的位置:首页 > 编程语言 > Java开发

java 父类引用指向子类对象

2016-02-02 22:29 567 查看
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);//错误
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: