//class A
package zjfzju.a;
public class A
{
void csdn(){
System.out.println("第十期的程序员不要买,我已经上当了");
}
}
import zjfzju.a.*;
---------------------------------------
//class B
public class B extends A {
public B(){}
public static void main(String args[]){
B bb=new B();
bb.csdn();//如果class A 里的method csdn()是friendly or private就无法调用,如果用public那么所有的类都可以调用(单是这样有时候不安全,所以用protected,only desderived classes can transfer it
}
}
睡觉了!祝你在java的道路上进步的快一些
The next access level specifier is protected, which allows the class itself, subclasses,and all classes in the same package to access the members.
这句话和“protected 就是我的东西只有和我一伙的或者我儿子能用“是一个道理!
你的程序有很多问题:
一:包名需要小写
二:两个编译单元(A 和B)位于不同的package中,似乎不能继承,如果要继承就放在同一个package中
三:如果要调用不同包里的变量或方法,改变两或方法必须为public
//A.java
package A;//包名要小写(规范编码)
public class A//类名最好不要和包名一致
{
protected int i;//这里的访问权限因为public
}
//B.java
package B;//up
import A.A;
public class B extends A//不在同一个包里不存在extends
{
int j//没有初始化
void T(A a)
{
a.i=10;
}
}
我写了一个写的例子帮你理解包和访问权限的含义
//class A
package zjfzju.a;
public class A
{
int k=20;
public A(int i){
i=10;
System.out.println(i);
}
}
import zjfzju.a.*;
---------------------------------------
//class B
public class B {
public static void main(String args[]){
int j=0;
int k=0;
A aa=new A(j);
System.out.println(aa.k);
}
}
java Tutorial里有这样一句话不知该如何理解
The next access level specifier is protected, which allows the class itself, subclasses,and all classes in the same package to access the members.