Java中的final和向上转型

</pre><pre name="code" class="java">package Number;

class Parent{
	private final void doit(){
		System.out.println("父类.doit()");
	}
	final void doit2(){
		System.out.println("父类.doit2()");
	}
	public void doit3(){
		System.out.println("父类.doit3()");
	}
}
class Sub extends Parent{
	public final void doit(){
		System.out.println("子类.doit()");//并不是覆盖父类的方法而是生成一个新方法
	}
	//public void doit2(){
		//System.out.println("子类.doit2()");;//父类中的final方法是不能被覆盖的
	//}
	public void doit3(){
		System.out.println("子类.doit3()");//覆盖父类的doit3()方法
	}
	public void doit4(){
		System.out.println("子类.doit4()");
	}

}	
public class First{
	public static void main(String[] args){
		Sub s = new Sub();
		s.doit();
		s.doit2();
		s.doit3();
		s.doit4();
		System.out.println("...............");
		Parent p =new Sub();//因为赋给了父类类型的变量p,因此产生了一些限制,就是子类中有而父类中没有的方法不能调用
		System.out.println(p.getClass());
		//p.doit();//The method doit() from the type Parent is not visible
		p.doit2();
		p.doit3();
		//p.doit4();//The method doit4() is undefined for the type Parent
		//从测试结果来看 p和s的区别在于:子类中有而父类中没有的方法 p就不能够调用,而这个对于s来说是能够的
	}	
}


输出结果:

子类.doit()
父类.doit2()
子类.doit3()
子类.doit4()
...............
class Number.Sub
父类.doit2()
子类.doit3()


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值