当前位置:编程学习 > JAVA >>

有关继承的问题

有两个包;
第一个包com. one 中的 Stu.java 文件内容:

package com.one;

public class Stu {
   public int x;
   protected int y;

}


第二个包com. two 中的 CollStu.java文件中内容:


package com.two;
import com.one.*;
public class CollStu extends Stu {
  String another;
  protected int z;
}

class Test {

public static void main(String[] args) {
CollStu c = new CollStu();
c.another = "";
c.x = 1;
c.y = 1;             //编译错误
        c.z = 2;
}

}


CollStu 从 父类 Stu 继承 了 Stu中可以访问的成员 ,实例变量 y声明为 protected,应该可以被
子类CollStu 继承 ,但是为什么在IDE 中 用 "c ." 的形式点不出来y ,而且那一行会编译错误? 


既然 父类中的y已经被 子类继承,成为子类的成员,那就可以想子类中定义的其他成员一样用了,它们都被认为是子类的成员。所以,为什么同样是protected 声明 ,z可以引用 ,y就不行了呢?   --------------------编程问答-------------------- lz先搞明白 public  protected  private的区别。 --------------------编程问答--------------------  y声明为 protected表示该属性子类可见,Test又不是子类,自然看不见了。
z可以引用,是因为protected的作用域还包含同一个包,属性同一个包可见。 --------------------编程问答-------------------- protected指的是在子类中可被调用
你Test是子类么? --------------------编程问答--------------------
引用 3 楼 AA5279AA 的回复:
protected指的是在子类中可被调用
你Test是子类么?


引用 2 楼 xxhhbb1538 的回复:
 y声明为 protected表示该属性子类可见,Test又不是子类,自然看不见了。
z可以引用,是因为protected的作用域还包含同一个包,属性同一个包可见。
--------------------编程问答--------------------
引用 4 楼 shawncpp 的回复:
Quote: 引用 3 楼 AA5279AA 的回复:

protected指的是在子类中可被调用
你Test是子类么?


引用 2 楼 xxhhbb1538 的回复:
 y声明为 protected表示该属性子类可见,Test又不是子类,自然看不见了。
z可以引用,是因为protected的作用域还包含同一个包,属性同一个包可见。



引用 3 楼 AA5279AA 的回复:
protected指的是在子类中可被调用
你Test是子类么?


但是java的书上说,继承关系,子类从父类继承的父类中的成员,可以和子类的定义的成员一样使用。我是这么想的,CollStu 从Stu 中继承 y ,相当于在 子类中有 proteccted int y 。而 子类Stu 和 Test类 是在同样一个包中。所以应该能访问 --------------------编程问答--------------------
引用 2 楼 xxhhbb1538 的回复:
 y声明为 protected表示该属性子类可见,Test又不是子类,自然看不见了。
z可以引用,是因为protected的作用域还包含同一个包,属性同一个包可见。


可是“ c.y”  c是对子类 CollStu 的引用,不是对父类的引用 。而子类CollStu继承了 Stu中的y ,而且 CollStu 和test类又都是在同一个包里,所以这样想,我觉得可以用 --------------------编程问答-------------------- 其实你不用想那么多。
class Test{
private int i=5;
}
class Test2{
public static void main(String[] args) {
Test t=Test();
//这里你觉得可以直接t.i;调用么?原理一样的。
}
}
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,