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标签的成员变量和成员函数是公共的,是所有人可见的。如果我们把display的private改成public我们就不需要借助public的setValue函数。
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中直接访问Display的value和limit
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方法,能够被子类 ;同包子类 ;不同包子类 和包内类使用。而public比protected多了的一个访问权限是不同包内类。protected则无法访问。
看上去protected只是比public的访问权限少一点点,其实相差巨大。仔细重新看看protected标记的东西能够被什么访问?第一个是子类,第二个是同包类。
1.子类不需多说都是关联度很大的,继承得来的。
2.同包类呢?包是Java的一种文件管理机制,我们通常把相关联的Java源代码文件放进同一个包内,因此他们也是有关联度的,只是比子类要低一点。因此public和protected的差别就显而易见了。
包package
包是一种Java的文件管理机制。就像一个package里能有多个class文件,一个 src文件 里同样能有很多个package。可以把包理解为一个书包,我们在这个书包里放了很多书 ↩︎