Java的访问属性

public class Display {
	private int value=0;
   	private int limit=0;
 
   	public Display(int limit)
   	{
    	this.limit=limit;
   	}
 
  	 public void SetValue(int value)
   	{
   	 this.value=value; 
   	}
 }
public class Clock {
	 private Display hour=new Display(24);
	 private Display minute=new Display(60);
	 private Display second=new Display(60);
	 
	 public Clock(int hour,int minute,int second)
	 {
	  this.hour.value=hour;报错value是vision不可见的
	  this.hour.SetValue(hour);
	  this.minute.SetValue(minute);
	  this.second.SetValue(second);
	 }
}

1.1 private属性

private顾名思义是私有的,私人的意思。Java的基本原则是一个class中的成员变量如果没有充足的理由,那就需要给他一个private属性,来保证他的安全。private属性只能对类中的成员变量成员函数有用。并且是这些被打上private属性的东西就会被这个class私有。其他的class是不能直接访问的,需要通过它的public成员函数才能访问。根据开头的例子可以看出。

2.1 public属性

public与上面提到的private刚好相反,顾名思义,被打上public标签的成员变量和成员函数是公共的,是所有人可见的。如果我们把displayprivate改成public我们就不需要借助publicsetValue函数

class Display {
	 public int value=0;
	 public int limit=0;
	 
	 public Display(int limit)
	 {
	  this.limit=limit;
	 }
	 
	 public void SetValue(int value)
	 {
	  this.value=value; 
	 }
 }

我们就可以在Clock的main中直接访问Displayvaluelimit

this.hour.value=50;
this.minute.limte=60;

2.2 public类与文件名

我们在一个class文件里能写很多个类,但是其中只能有一个类可以打上public属性。值得注意的是该class文件名需要与该文件内的public类保持同名,否则编译器会报错。

3.1 friendly属性

那么有些成员变量和成员函数既没有public也没有private,前面是空的,eclipse会给它打上一个friendly属性。friendly代表这个成员变量或者成员函数是被同一个包(package)1里的其他人看到的。

4.1 static属性

众所周知,就连不学计算机的盆友萌也知道Java是 面向过程 面向对象的语言。初学Java也已经知道了类(class)对象图纸,是蓝图,模板。但是 static 非常特殊。被打上 static 的东西可以不依托对象就可存在。同样的我们拿Display来举例

class Display {
	 static int value=0;  它叫类变量
	 private int limit=0; 
	 
	 public Display(int limit)
	 {
	  this.limit=limit;
	 }
	 
	 static void SetValue(int value)  它叫类函数
	 {
	  this.value=value; 
	 }
 }

被标记有 static 的东西被称为类XX。这些东西不依托于对象,就算我们不new一个对象出来,我们依然可以对 static 的value进行赋值。而相反的limit就不行。它需要new一个对象a后才能访问它。
值得一提的是对象a中我们同样能对 static 的value赋值,但是如果我们有一个对象b的话,对象b里的value也会被同时赋值

5.1 protected属性

protected属性是为了类继承,包内类而设计的一种访问属性。尽管在原则上成员变量是private,但是在某些时候,我们确实需要使用到该成员变量,但是使用public修饰又过于暴露。因此protected应运而生。
protected修饰的成员变量or方法,能够被子类同包子类不同包子类包内类使用。而publicprotected多了的一个访问权限是不同包内类protected则无法访问。
看上去protected只是比public的访问权限少一点点,其实相差巨大。仔细重新看看protected标记的东西能够被什么访问?第一个是子类,第二个是同包类
1.子类不需多说都是关联度很大的,继承得来的。
2.同包类呢?包是Java的一种文件管理机制,我们通常把相关联的Java源代码文件放进同一个包内,因此他们也是有关联度的,只是比子类要低一点。因此publicprotected的差别就显而易见了。


  1. 包package
    包是一种Java的文件管理机制。就像一个package里能有多个class文件,一个 src文件 里同样能有很多个package。可以把包理解为一个书包,我们在这个书包里放了很多书 ↩︎

发布了42 篇原创文章 · 获赞 23 · 访问量 2332

猜你喜欢

转载自blog.csdn.net/qq_40710190/article/details/103210815
今日推荐