具有protected修饰的成员变量和方法,在不同包的子父类中调用的细节问题

package a;
public class Father {
private String name="aaa";
protected int i=5;
        //如果将这里的成员变量、成员方法修饰static,那么在子类中,就可以使用父类的引用调用static的成员了。

        public void test1(){
            System.out.println("name="+name);
        }
     
        protected void test2(){
            System.out.println("2="+test3());
        }
    
        private int test3(){
            return 2;
        }

}

===============================================================

package b;
import org.junit.Test;
import a.Father;
public class Son extends Father { 
public static void main(String[] args){
        Father f=new Father();
        //int a = f.i;   //i是protected
        f.test1();    
        //f.test2();    //test2()是protected
        //f.test3();    //test3()是private
        
        f=new Son();
        //int a = f.i;
        f.test1();
        //f.test2();
       
        Son s=new Son();
        int b = s.i;
        s.test1();   
        s.test2();   //这里不报错
        //s.test3();//private的当然不能访问
        
        //main()是静态方法,不能调用this、super
    }

@Test
public void test(){
    Father f=new Father();
    //int a = f.i;
    f.test1();    
    //f.test2();   //test2()是protected
    
    //只能使用Child(子类)本身来调用
    int b = this.i;
    int c = super.i;
    this.test2();   
    super.test2();
       
    Son s=new Son();
    int d = s.i;
    s.test1();   //这里不报错
    s.test2();
    //s.test3(); //private的当然不能访问

}

==========================================================

被protected所修饰的属性和方法可以被该类的子类所访问的意思是说可以在该类的子类内部所访问,所以在和Farther类的不同包中,尽管是new Farther(),但是f引用依然不能访问Farther类中有protected修饰的成员变量和成员方法,

方法一:只有是new Son(),而且使用s(而不是使用f)引用,才可以访问不同包的Farther中protected修饰的成员变量和成员方法。

方法二:在Son类的成员方法中,使用this、super来调用不同包的Farther中protected修饰的成员变量和成员方法。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值