标签:问题 ted ack port 默认 意义 rip edm 空间
权限 | 类内 | 同包 | 不同包子类 | 不同包非子类 |
---|---|---|---|---|
private | √ | × | × | × |
default | √ | √ | × | × |
protected | √ | √ | √ | × |
public | √ | √ | √ | √ |
package com.javaApi.override.publicTest; public class Hello { //访问权限变量 依次private,default,public,protected private String strPrivate="strPrivate"; String strDefault="strDefault"; public String strPublic="strPublic"; protected String strProtected="strProtected"; public Hello(){ } private Hello(int i){ System.out.println(i); } //访问权限方法 依次private,default,public,protected private void privateMethod(){ System.out.println("privateMethod"); } void defaultMethod(){ System.out.println("defaultMethod"); } public void publicMethod(){ System.out.println("public method"); } protected void protectedMehtod(){ System.out.println("protectedMethod"); } @Test protected void runTest(){ //本类调用各个方法以及各个变量 Hello h=new Hello();//能够访问,能够正常调用 h.publicMethod();//能够访问,能够正常调用 h.privateMethod();//能够访问,能够正常调用 h.defaultMethod(); //能够访问,能够正常调用 h.protectedMehtod();//能够访问,能够正常调用 h=new Hello(1);//能够访问,能够正常调用 System.out.println(h.strPrivate);//能够访问,能够正常调用 System.out.println(h.strPublic);//能够访问,能够正常调用 System.out.println(h.strProtected);//能够访问,能够正常调用 System.out.println(h.strDefault);//能够访问,能够正常调用 } }
结果:
package com.javaApi.override;//与Hello不同包 public class Handler { //不同包的方法调用Hello类内容 @Test public void authority(){ //不同包下只能访问public, Hello h=new Hello();//能够访问,能够正常调用 //System.out.println(h.strPrivate);无法获取,编译器不通过 System.out.println(h.strPublic);//能够访问,能够正常调用 //System.out.println(h.strProtected);//无法获取,编译器不通过 //System.out.println(h.strDefault);//无法获取,编译器不通过 h.publicMethod();//能够访问,能够正常调用 //h.privateMethod();无法调用方法而且编译器也不通过。 //h.defaultMethod(); 无法访问,编译器不通过 //h.protectedMehtod();无法访问,编译器不通过 /** * 由于参数为int类型的构造Hello(int i)方法是private方法, * 所以无法方法而且编译器也不通过。 */ //h=new Hello(1);//无法访问,编译器不通过 } }
结果:
package com.javaApi.override.publicTest;//与Hello同包 public class Handler { @Test public void authority(){ Hello h=new Hello();//能够访问,能够正常调用 //System.out.println(h.strPrivate);无法获取,编译器不通过 System.out.println(h.strPublic);//能够访问,能够正常调用 System.out.println(h.strProtected);//能够访问,能够正常调用 System.out.println(h.strDefault);//能够访问,能够正常调用 h.publicMethod();//能够访问,能够正常调用 //h.privateMethod();无法访问,编译器不通过 h.defaultMethod();//能够访问,能够正常调用 h.protectedMehtod();//能够访问,能够正常调用 /** * 由于参数为int类型的构造Hello(int i)方法是private方法, * 所以无法方法而且编译器也不通过。 */ //h=new Hello(1);无法访问,编译器不通过 } }
结果如下:
package com.javaApi.override;;//与Hello不同包 //本HelloChild和父类Hello不同包 class HelloChild extends Hello{ @Test @Override public void runTest(){ HelloChild h=new HelloChild(); h.publicMethod();//正常被继承,能够访问,能够正常调用 //h.privateMethod();不能被继承,不能够访问,能够正常调用 //h.defaultMethod(); 不能被继承,不能够访问,能够正常调用 h.protectedMehtod();//正常被继承,能够访问,能够正常调用 Hello h2=new HelloChild(); //h2.protectedMehtod();不能够访问,不能够正常调用 //System.out.println(h.strPrivate);无法获取,编译器不通过 System.out.println(h.strPublic);//能够访问,能够正常调用 System.out.println(h.strProtected);//能够访问,能够正常调用 //System.out.println(h.strDefault);无法获取,编译器不通过 } }
结果如下:
package com.javaApi.override.publicTest;//与Hello同包 //本HelloChild和父类Hello同包 class HelloChild extends Hello{ @Test @Override public void runTest(){ HelloChild h=new HelloChild(); h.publicMethod();//正常被继承,能够访问,能够正常调用 //h.privateMethod();不能被继承,不能够访问,能够正常调用 h.defaultMethod(); //正常被继承,能够访问,能够正常调用 h.protectedMehtod();//正常被继承,能够访问,能够正常调用 Hello h2=new HelloChild(); h2.protectedMehtod();//能够访问,能够正常调用 //System.out.println(h.strPrivate);无法获取,编译器不通过 System.out.println(h.strPublic);//能够访问,能够正常调用 System.out.println(h.strProtected);//能够访问,能够正常调用 System.out.println(h.strDefault);//能够访问,能够正常调用 } }
结果如下:
标签:问题 ted ack port 默认 意义 rip edm 空间
原文地址:https://www.cnblogs.com/likejiu/p/9977984.html