当前位置: 代码迷 >> J2SE >> java中的沿袭
  详细解决方案

java中的沿袭

热度:1281   发布时间:2013-02-25 00:00:00.0
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。
  相关解决方案