父类:
package Inherit;public class Supper {
protected int pro;
protected void f1() {
System.out.println("protected f1 in Supper!");
}
}子类1:
package sub;import Inherit.Supper;
public class Sub extends Supper {
public static void main(String[] args) {
Supper sup = new Supper();
Sub sub = new Sub();
sub.pro = 2;
sub.f1(); //这里没有问题!
}
}
子类2:
package sub;import Inherit.Supper;
public class Sub2 extends Supper {
public static void main(String[] args) {
Supper sup = new Supper();
Sub sub = new Sub();
sub.f1(); //error!
sub.pro = 2; //error1!
}
}
为什么在sub2中生成的sub对象无法调用f1()方法呢?f1()方法在sub中是什么权限的?
package Inherit;public class Supper {
protected int pro;
protected void f1() {
System.out.println("protected f1 in Supper!");
}
}子类1:
package sub;import Inherit.Supper;
public class Sub extends Supper {
public static void main(String[] args) {
Supper sup = new Supper();
Sub sub = new Sub();
sub.pro = 2;
sub.f1(); //这里没有问题!
}
}
子类2:
package sub;import Inherit.Supper;
public class Sub2 extends Supper {
public static void main(String[] args) {
Supper sup = new Supper();
Sub sub = new Sub();
sub.f1(); //error!
sub.pro = 2; //error1!
}
}
为什么在sub2中生成的sub对象无法调用f1()方法呢?f1()方法在sub中是什么权限的?
访问外部类,只能访问public接口。
要访问自身类,可以访问protect接口。
1。不同包的子类
2。同包其他类
包外只有子类可以访问