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。