JAVA ---多态例题分析

package com.heima.eclipse;
import java.awt.print.Printable;
import java.lang.reflect.Method;
import java.util.Scanner;
import javax.security.auth.x500.X500Principal;


public class HelloWorld1 {
	
	public static void main(String[] args){
		A a = new B();
		a.show();
		
		//这种就是多态中的成员访问成员变量:编译看左边,运行看右边。
		//对于左边的A a,首先看父类里面有没有show方法,如果有,则编译通过,如果没有的话,系统就会报错。
		//再看new B(),在B里面,表面上是没有show方法的,不过B继承了A,因此B里面也是有show方法的,
		//在代码中用注释标出,因此B里面的show()运行show2()会运行B里面的show2方法,就会打印出'爱';
		
		
		
		B b = new C();
		b.show();
		
		//对于左边的B b,首先看父类B里面有没有show方法,如果有,则编译通过,如果没有的话,系统就会报错。
		//在B里面,貌似是没有show方法,但是B继承了A,因此B里面还是有一个‘看不见’的show方法,
		//再看new C(),在C里面,show()方法里面是super.show(),因此就是B方法里面的show方法,而B中里面的show方法是show2(),
		//这个show2()会运行C里面的show2(),因此会打印出‘你’.
}
}

class A {
	public void show() {
		show2();
	}
	public void show2() {
		System.out.println("我");
	}
}
class B extends A {
	/*public void show() {//默认是没有这个的,不过B继承了A的方法。
		show2();
	}*/
	public void show2() {
		System.out.println("爱");
	}
}
class C extends B {
	public void show() {
		super.show();
	}
	public void show2() {
		System.out.println("你");
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值