四种访问控制权限
public、protected、default、private。
| NO | 范围 | public |protected|default|private|
| :--------: | :----: | :----: | :--------: | :----: | :----: |:----: |
| 1| 在同一个类中 | √ |√|√| √ |
| 2 | 在同一个包的不同类 | √ | √ |√| |
| 3 | 在不同包的子类 | √ |√|||
| 4 | 在不同包的非子类 | √ |||||
protected权限
package cn.fovegage.demoa;
public class A{
protected String info = "Hello";
}
--------------------------------------------------------
package cn.fovegage.demob;
import cn.fovegage.demoa.A;
public class B extends A{
public void print(){
System.out.println(super.info);
}
}
-------------------------------------------------------
package test;
import cn.fovegage.demob.B;
public class Test{
public static void main(String []args){
new B().print();
}
}
----------------------------------------------------------
F:\test>javac -d . A.java
F:\test>javac -d . B.java
F:\test>java test.Test
Hello
错误的访问
package test;
import cn.fovegage.demoa.A;
public class Test{
public static void main(String []args){
A a = new A();
System.out.println(a.info);
}
}
-------------------------------------------
F:\test>javac -d . Test.java
Test.java:6: 错误: info可以在A中访问protected
System.out.println(a.info);
^
1 个错误
构造方法私有化
单列设计(Singleton)
class Singleton{
public void print(){
System.out.println("Hello World!!!");
}
}
public class CC {
public static void main(String []args){
Singleton s = null;
s = new Singleton();
s.print();
}
}
加入构造方法(错误的代码)
class Singleton{
private Singleton(){}
public void print(){
System.out.println("Hello World!!!");
}
}
public class CC {
public static void main(String []args){
Singleton s = null;
s = new Singleton(); //此处代码错误
s.print();
}
}