日期:2014-05-20  浏览次数:20622 次

java中的继承
java中继承中:父类的private的东西能否被继承?
我用下面这个方法能证明是能继承的吗?
class Animal{
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
}
class Dog extends Animal{

}
public class Demo {

  public Demo() {
  }
  public static void main (String[] args) {
  Dog d=new Dog();
  d.setName("dog");
  System.out.println (d.getName());
  }
   
}

d.setName("dog") 明显赋值进去了
如果不能继承 那"dog"往哪搁?
找了很多资料,不晓得是咋回事
顺带问下C#中是可以继承的吧[在winform中利用子类窗体继承父类的窗体证明(父类的私有控件(包含一个容器)是被继承下来了,因为在子类中无法往该容器中拖控件),这里不阐述]

------解决方案--------------------
子类继承的话,就继承了父类的所有属性和方法。
只是子类中不能直接访问父类的 private 属性和方法,只能访问public的属性和方法。
------解决方案--------------------
Java中并没有不能继承private。
只是父类中不能直接访问private

这个在所有的面向对象语言中都是一样的。
子类不能使用 name="Dog"
只能使用 pubblic 方法
------解决方案--------------------
被继承但是不能被直接访问,你要是在类Dog中直接写name = "dog"是不行的
------解决方案--------------------
private的方法和属性是不能被子类继承的
而你调用的是public方法操作private的属性是可以 这就是封装的意义
不能直接调用父类的private方法 意思是你不能这样用d.name="dog"和System.out.println(d.name);
如果属性是protected和public的话就可以直接用d.name = "dog"了
------解决方案--------------------
d.setName("dog"); 
调用的是父类中的setName,set的也是父类里的name
测试一下
Java code
public class Demo { 

        public Demo() { 
        } 
        public static void main (String[] args) { 
        Dog d=new Dog(); 
        d.setName("dog"); 
        System.out.println (d.getName());
        System.out.println(d.getClass().getDeclaredFields().length);
        } 
        
    }

------解决方案--------------------
继承了方法的同时也继承了类属变量,都能继承,没有问题
------解决方案--------------------
up!
------解决方案--------------------
LZ没必要想那么多,记住不能直接访问private属性或方法就行了,要通过public的方法访问
------解决方案--------------------
探讨
如果不能继承  那"dog"往哪搁?
怎么就没有人回答呢?

------解决方案--------------------
学习
------解决方案--------------------
子类 extends 父类 所有的属性和方法!只是对父类的pricate 没有访问权!所以要提供相应的get和set
方法!然后提供一个默认无参的构造方法成为一个JavaBean!
------解决方案--------------------
Java中好像除了构造方法不能被继承之外,其它的属性、方法都能被子类继承,能不能直接访问其属性和方法就得看访问控制符了。
------解决方案--------------------
1楼下解
------解决方案--------------------
这个程序没有任何问题!!!!!!!!!!!!!!!!!!!!1
------解决方案--------------------
建议好好看一下java对象在内存中是怎么使用的。
------解决方案--------------------
初学者,学习学习!
------解决方案--------------------
此题体现了封装的意义!
不能让其他类来直接调用或更改animal中的私有属性,而只能通过调用其public的set和get方法来进行animal中私有属性的操作
------解决方案--------------------
探讨
Java中并没有不能继承private。