Java中与权限修饰词有关的易混淆知识点
例一
package edu.stu.access;
public class Test {
}
package edu.stu.subaccess;
import edu.stu.access.*;
public class SubTest {
public static void main(String[] args) {
Test test = new Test();
System.out.println(test);
}
}
结果
edu.stu.access.Test@15db9742
解释
上面结果表明,一个类如果没有显示地指明它的构造器,那么这个默认构造器的修饰词为public
也就是说,上面类Test的构造器如下:
public Test(){
}
例二
package edu.stu.access;
public class Test {
private Test() {
}
}
package edu.stu.subaccess;
import edu.stu.access.*;
public class SubTest extends Test {
public static void main(String[] args) {
}
}
编译时报错
edu/stu/subaccess/SubTest.java:5: error: Test() has private access in Test
public class SubTest extends Test {
^
1 error
例三
package edu.stu.access;
public class Test {
protected void print() {
System.out.println("Hello, This is Test.print() method.");
}
}
package edu.stu.subaccess;
import edu.stu.access.*;
public class SubTest extends Test {
public static void main(String[] args) {
Test test = new SubTest();
test.print();
}
}
编译时报错
edu/stu/subaccess/SubTest.java:9: error: print() has protected access in Test
test.print();
^
1 error
例四
package edu.stu.access;
public class Test {
protected void print() {
System.out.println("Hello, This is Test.print() method.");
}
}
package edu.stu.subaccess;
import edu.stu.access.*;
public class SubTest extends Test {
public static void main(String[] args) {
SubTest subTest = new SubTest();
subTest.print();
}
}
结果
Hello, This is Test.print() method.