解释一下protect的非同包子类为什么可以访问?该怎么访问?
如果父类的属性访问权限为protect时,同包子类继承时该属性权限仍旧是protect;但是非同包子类继承时权限会降级为private
故只能本类访问
父类Father
package com.qf.demo;
public class Father {
protected int age=35;
}
同包子类
package com.qf.demo;
public class SamePackageSon extends Father{
public void fun(){
System.out.println(age);//继承自Father的age,访问权限为protect
}
}
同胞类
package com.qf.demo;
public class Main {
public static void main(String[] args) {
Father father=new Father();
System.out.println(father.age);//访问权限protect
SamePackageSon samePackageSon=new SamePackageSon();
System.out.println(samePackageSon.age);访问权限protect
}
}
非同子类
package com.qf.demo1;
import com.qf.demo.Father;
public class DifferentPackagesSon extends Father {
public void fun(){
System.out.println(age);//继承自不同包com.qf.demo.Father的age 访问权限降级为为:private
}
}
非同胞类
package com.qf.demo1;
import com.qf.demo.Father;
public class Main {
public static void main(String[] args) {
Father father=new Father();
// System.out.println(father.age);protected,非同包不可访问
DifferentPackagesSon differentPackagesSon=new DifferentPackagesSon();
// System.out.println(differentPackagesSon.age);访问权限为:private (已降级)
}
}