辨析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的辨析

Objective-C——属性与成员变量辨析

protected与public的区别

public/private/protected的区别

c++里面的protect和public、private有啥区别?

public/private/protected的具体区别