辨析public private protected
Posted 北辰月续
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了辨析public private protected相关的知识,希望对你有一定的参考价值。
private protected,default(默认值),public辨析
前言
这四个关键词极为的常见,因此可以熟练的了解他们的应用域是极为重要的。并且这些修饰符在修饰类和修饰方法时,使用有所区别
修饰类
结论
外部类只能用public和default修饰,内部类可以被四个修饰符修饰。
原因
在修饰外部了类的时候我们使用public和default(默认),那么我们使用private和protected修饰外部类不可以吗?
不可以。我们知道外部类的上一级就是包。也就是说我们定义一个外部类。它的作用域只有两种,同一个包下和任何位置。
如果使用private定义外部类,根本无法被其他外部类调用。
protected不是作用域大于default吗?
作用域确实是大于default,protected中子类可以调用父类的方法,但是在不同包中的外部类访问不到,因此作用域和default相同。所以外部类用public和default(默认)
public class ShoutDemo {
protected class Demo{}
private class Demo1{}
}
class ShoutDemo1 {
protected class Demo{}
private class Demo1{}
}
上面两个类的声明都是正确的
结论
修饰符在不写的时候是默认值,但是default不是修饰符
class ShoutDemo1 { //正确
public void sayHello()
{}
}
default class ShoutDemo2 { //错误
public void sayHello()
{}
}
结论
一个class文件只能有至多有一个public修饰的外部类
修饰方法
private表示私有,私有说明它只能自己调用自己,而其他的类无法对其进行调用
default是默认的修饰符,它可以为当前类所调用,也可以被同一个包下的其他类调用
proetected对于被同一个包下的所有类调用,也可以被用继承关系的子女调用(可以不再一个包下)
public可以被所有的用户进行调用
这里我们要清楚:方法是在类里。就算是public定义的方法放在default(默认)定义的类中。这个方法只能被同一个包下的所有类调用,而不能被所有用户调用。
class Shout {
public void sayHello()
{
System.out.println("hello");
}
}
同样就算是public类中的private方法也只能在自己的类中使用
public class Shout {
private void sayHello()
{
System.out.println("hello");
}
}
以上是关于辨析public private protected的主要内容,如果未能解决你的问题,请参考以下文章
java笔记java中public/protected/default/private的辨析