。。视频中说:
private:只能在本类中调用;
默认的:只能在同一个包中调用;
protected:只能在同一个包中调用,要是不同包,只能是子类;
public:所有的地方都能用
然后我自己尝试了一下,发现有一下几点疑问:(主要是二级包的问题)
在二级包中的子类中不能调用public修饰的变量;
在二级包中的子类不能调用protected修饰的变量;
下面有代码!
只能在方法块中对成员变量进行修改
//二级包中的子类
package com.shiyan2.Second;
//本包中的二级包下的子类中:
import com.shiyan2.C;
public class G extends C {
public static void main(String[] args){
C c=new C();
c.a=1;
c.b=2;
c.c=3;
c.d=4;
}
}
你把调用放到方法里面去,直接在类里面调用是不行的,C可以new出来,C里面的abcd引用不了
我写了下 public 的 protected的修饰 没报错啊
//二级包中的子类
package com.shiyan2.Second;
//本包中的二级包下的子类中:
import com.shiyan2.C;
public class G extends C {
C c=new C();
c.a=1; //这里四个调用都报错 (public)
c.b=2; //Syntax error on token "a", VariableDeclaratorId expected after this token
c.c=3;
c.d=4;
}
package com.shiyan2;
//声明不同修饰符的变量的类
public class C {
public void print(){
System.out.println("fulei de fangfa ");
}
public int a ;
/* 6.在二级包的该类的子类下面不能被调用
*/
protected int b; //总结:只要同包都能调用,并且区别默认的是:它在其他包的子类中也能被调用
/* 3.在其他包的普通类下面不能调用
* 5.5.在二级包中的普通类下面不能被调用(其实二级包也算是其他包)
* 6.在二级包的该类的子类下面不能被调用
*/
int c; //总结:只要同包下都能调用(其中二级包不算同包!)
/* 3.在其他包的普通类下面不能被调用
* 4.在其他包的该类的子类下不能被调用
* 5.5.在二级包中的普通类下面不能被调用(其实二级包也算是其他包)
* 6.在二级包的该类的子类下面不能被调用
*/
private int d; //总结:只有在本类中可以调用!
/* 1.在同一个包下的其他类中就不能调用
* 2.在同一个包下的子类中也不能调用(其实子类也算是同一个包下的类)
* 3.在其他包的普通类下不能被调用
* 4.在其他包的该类的子类下不能被调用
* 5.在二级包中的普通类下面不能被调用(其实二级包也算是其他包)
* 6.在二级包的该类的子类下面不能被调用
*/