final和private关键字

来源:互联网 发布:网络文件共享平台 编辑:程序博客网 时间:2024/05/02 04:55

程序如下:

class WithFinals{

private final void f() {print("WithFianls.f()");}

private final vodi g() {print("WithFinals.g()");}

}

class OverridingPrivate extends WithFinals{

private final void f(){print("OverridingPrivate.f()");}

private void g(){print("OverridingPrivate.g()");}

}

class OverridingPrivate2 extends OverridingPrivate{

private final void f(){print("OverridingPrivate2.f()");}

private void g(){print("OverridingPrivate2.g()");}

}

public class test{

public static void main(String[] args){

OverridingPrivate2 op2=new OverridingPrivate2();

op2.f();

op2.g();

//可以这么向上转型

OverridingPrivate op=op2;

//但是不能这么调用方法

//!op.f();

//!op.f();

WithFinal wf=op2;

//!wf.f();

//!wf.g();

}

}


WHY: 覆盖 只有在某方法是基类的借口的一部分时才会出现。即,必须能将一个对象向上转型为它的基本类型并调用相同的方法。如果某方法为private,它就不是基类的借口的一部分。它仅是隐藏在类中的程序代码。

原创粉丝点击