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

Java 对象的多态性——必须画图理解

2016-04-24 21:06 537 查看
引用多态(向上转型)
父类的引用可以指向本类的对象

父类的引用可以指向子类的对象(动态绑定)

Outer in=new Outer();
Outer out=new Inner();  //指向子类的对象


一个引用调用的是哪个方法,取决于这个引用所指向的对象

class Outer{
public String A="我";
public void say(){
System.out.println("我");
}
}
class Inner extends Outer{
public String B="你";
public void say(){  //覆写父类方法
System.out.println("你");
}
public void ask(){
System.out.println("他");
}
}
 
class ListSetMap {
public static void main(String[] args) {
Outer out=new Inner();  //指向子类的对象
out.say();
//out.ask();  会找不到符号
}
}


输出        你

注意:

        父类不能调用子类新声明的方法

        子类的应用是不能指向父类的对象的

        

  Tips:

        一个引用能调用什么成员(变量和函数),取决于这个引用的类型(Outer )就是类型,里面没有ask()方法,所以不能调用ask();

向下转型





先向上转型
在向下转型

class ListSetMap {
public static void main(String[] args) {
Outer o=new Inner();		//向上转型
Inner I=(Inner) o;				//向下转型
System.out.println(I.A);		//调用父类的A属性
System.out.println(I.B);
I.say();
I.ask();
}
}


输出



可以通过instanceof来判断一个引用是否属于一个类

Outer o=new Outer();		//向上转型
Outer k=new Inner();
System.out.println(o instanceof Inner);
System.out.println(k instanceof Inner);


输出

        false

        true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: