当前类 | 相同包下不同的类 | 不同包下的类 | |
public | 可用 | 可用 | 可用 |
private | 可用 | ||
default | 可用 | 可用 | |
protected | 可用 | 可用 |
那么,default与protected有什么区别呢?
default是当前包下使用。
protected是让子类对象使用。
附录:
总结一下遇到的修饰符
修饰符 | 类 | 成员变量 | 成员方法 | 构造方法 |
public | 可以修饰 | 可以修饰 | 可以修饰 | 可以修饰 |
private(private不能用来修饰类,假设它修饰类的话,那么这个类不能被任何类继承,没有存在的意义) | NO | 可以修饰 | 可以修饰 | 可以修饰 |
default | 可以修饰 | 可以修饰 | 可以修饰 | 可以修饰 |
protected(protected主要是为子类对象服务的,所以不能修饰类,只能修饰成员。如果它能修饰类的话,那么子类就继承不了这个类了,还怎么为子类对象服务?) | NO | 可以修饰 | 可以修饰 | 可以修饰 |
abstract(没有抽象变量这个东西吧?构造方法是为了初始化成员变量,所以成员变量不能修饰,构造方法也没必要修饰) | 可以修饰 | NO | 可以修饰 | NO |
static(static是方便我们直接用类名来调用成员变量与成员方法,所以不需要创建对象,也就是不需要构造方法) | NO | 可以修饰 | 可以修饰 | NO |
final(final修饰的类不能被继承,修饰的成员变量会变成常量,修饰的成员方法不能被重写) | 可以修饰 | 可以修饰 | 可以修饰 | NO |
比较常用的规则:
1.用public类修饰类,一个java文件只有一个类(如果一个文件有多个类,与文件名同名的类名用public修饰,其他的用default修饰)
2.成员变量都使用private修饰,并写getter和setter方法。
3.方法都使用public修饰
4.构造方法都用public修饰(如果不想让创建对象,可以用private修饰)