java中的继承

jayqean 2009-09-25 08:04:08
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中利用子类窗体继承父类的窗体证明(父类的私有控件(包含一个容器)是被继承下来了,因为在子类中无法往该容器中拖控件),这里不阐述]
...全文
420 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
renya16 2012-08-19
  • 打赏
  • 举报
回复
没有具体点的吗?
不继承那些方法也能用啊
taozhi8833998 2009-11-22
  • 打赏
  • 举报
回复
很不错吧 哈哈 大家都很厉害
zxlion 2009-09-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 filemon 的回复:]
Java中并没有不能继承private。
只是父类中不能直接访问private

这个在所有的面向对象语言中都是一样的。
子类不能使用 name="Dog"
只能使用 pubblic 方法
[/Quote]
顶~~~
sixer04 2009-09-27
  • 打赏
  • 举报
回复
此题体现了封装的意义!
不能让其他类来直接调用或更改animal中的私有属性,而只能通过调用其public的set和get方法来进行animal中私有属性的操作
camel520 2009-09-27
  • 打赏
  • 举报
回复
初学者,学习学习!
hardycheng 2009-09-27
  • 打赏
  • 举报
回复
建议好好看一下java对象在内存中是怎么使用的。
lililililililili 2009-09-25
  • 打赏
  • 举报
回复
这个程序没有任何问题!!!!!!!!!!!!!!!!!!!!1
hui94781674 2009-09-25
  • 打赏
  • 举报
回复
1楼下解
sforiz 2009-09-25
  • 打赏
  • 举报
回复
Java中好像除了构造方法不能被继承之外,其它的属性、方法都能被子类继承,能不能直接访问其属性和方法就得看访问控制符了。
liuc0317 2009-09-25
  • 打赏
  • 举报
回复
子类 extends 父类 所有的属性和方法!只是对父类的pricate 没有访问权!所以要提供相应的get和set
方法!然后提供一个默认无参的构造方法成为一个JavaBean!
m_angle_m 2009-09-25
  • 打赏
  • 举报
回复
要是能画个图就很容易说明白了 愁。。。
jerry313 2009-09-25
  • 打赏
  • 举报
回复
学习
m_angle_m 2009-09-25
  • 打赏
  • 举报
回复
没说你同时开辟了父类空间吗 并不是说继承了Animal你就真的有了他的方法和属性 调用的set方法就是操作父类的属性
public class TestA {
public static void main(String[] args) {
Dog d = new Dog();
d.setName("dog");
System.out.println(d.getName());
System.out.println(d.name);
}
}
class Animal{
private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}
class Dog extends Animal{
public String name;
}
输出 dog
null
Dog类中的属性并没有被赋值
jiangxc2004 2009-09-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jayqean 的回复:]
如果不能继承  那"dog"往哪搁?
怎么就没有人回答呢?
[/Quote]
不被继承只是从访问权限上说的,new Dog的时候,这个对象会开辟一段空间,这段空间包括父类的所有成员变量,只不过如果这些变量用private修饰的话,就不能直接访问,得通过方法操作。你想想你就new了一个Dog对象,而Dog对象什么都没定义,如果没有父类的成员区域,它岂不是一个空的?
RainSmall 2009-09-25
  • 打赏
  • 举报
回复
LZ没必要想那么多,记住不能直接访问private属性或方法就行了,要通过public的方法访问
jayqean 2009-09-25
  • 打赏
  • 举报
回复
哈哈...有意思
new的子类对象 怎么放父类里了
loveofmylife 2009-09-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jayqean 的回复:]
如果不能继承  那"dog"往哪搁?
怎么就没有人回答呢?
[/Quote]
不是都说了吗,往父类的的name字段里搁,只能通过父类的public String getName()访问父类中的private name字段
m_angle_m 2009-09-25
  • 打赏
  • 举报
回复
当然是往父类的属性里放
jayqean 2009-09-25
  • 打赏
  • 举报
回复
这东西怎么能认为就认为的呢?
m_angle_m 2009-09-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jayqean 的回复:]
new子类的时候同时开辟了父类对象的空间
也就是子类中包含了父类
但private继承下来了不能使用
[/Quote]
因为父类的属性是private的 在类外不可以访问 所以只能通过public的set和get方法来操作这个属性
再用的时候就可以直接认为它是不能被继承的就行了
加载更多回复(11)

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧