我对Java中protected的认识。

  package mypack1;

public class ClassA {
              public int var1;
              protected int var2;
              int var3;
              private int var4;
              protected void method() {               
                            System.out.println("protected method in class a");
              }
}
 
package mypack2;
import mypack1.ClassA;
class ClassC extends mypack1.ClassA {
             // var2 = 3;               //不OK,
              void method3(){
              var2 = 4;               //执行此处时一定是存在一个ClassC的实例了,所以OK.
              this.var2 = 5;       //此处的var2与上一行的var2是同一个变量.
              }            
              public static void main(String[] args) {
                            ClassC c = new ClassC(); //创建了一个ClassC的实例.
                            c.method();       //此处的method()方法是从基类继承来的,这个继承的protected方法在派生类内部是可以访问的。
                            c.var2 = 3;         //此处的var2是从基类继承来的.
                           
                            ClassA a =new ClassA();  
                            //a.method();     //不能通过编译。此处的method()方法是基类的对象的protected方法,并不是派生类的对象的方法,在派生类内部无法直接访问基类对象的protected成员。(如果ClassC ClassA在同一个包中,则OK。)
                            //a.var2 = 3;       //不能通过编译。原因同上,此处的成员变量是基类的对象的,而不是派生类的对象的,所以在派生类中无法访问。 (如果ClassC ClassA在同一个包中,则OK。)  
              }
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值