下面的这个写法叫什么啊?覆写?重载?

sglbaby 2008-04-23 11:17:18
class a
{
int i=0;
}
class b extends a
{
int i=1;
}


如上两个类,我问一下。
b是不是可以继承a中的i?
还问一下,两个类中都有i,这个叫什么啊?覆写?重载?
...全文
288 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
li.jianfei 2008-04-24
  • 打赏
  • 举报
回复
复写和重载是针对方法而言的
这两个类中的I 没有任何关系!
云上飞翔 2008-04-23
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 jiazhengjing 的回复:]
不能访问的,也有被继承下来吧,只是不能直接访问吧,要通过父类的方法访问啊。又模糊了,查书。
[/Quote]
答:“继承”这个术语的真正含义是什么?当我们讲继承时,代表的是什么意思?
贴中http://topic.csdn.net/u/20080419/15/5a1339a9-8af3-4fe3-ac30-f7f6e379d88f.html
有这个问题的讨论。
如:父类中的private void f1()方法,子类是不能继承的(但要注意:子类对象中包含有一份完整的父亲对象)。这就是整个事件的理解。
Shine_Panda 2008-04-23
  • 打赏
  • 举报
回复
那可以说,类b继承了a中的i吗?这个说法对吗?
不对. 属性是类作为一种对象规范的描叙.类既然是一种模板那么属性就是这个模板的结构.
machele 2008-04-23
  • 打赏
  • 举报
回复
哈哈。。
jiazhengjing 2008-04-23
  • 打赏
  • 举报
回复
不能访问的,也有被继承下来吧,只是不能直接访问吧,要通过父类的方法访问啊。又模糊了,查书。
云上飞翔 2008-04-23
  • 打赏
  • 举报
回复
答:B能不能“继承”父类中的i,要看子类B能不能访问父类对象中的这个i,若能访问,则称为“被继承”下来了。若不能访问,则被称为“没有被继承”下来。
云上飞翔 2008-04-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 sglbaby 的帖子:]
class a
{
int i=0;
}
class b extends a
{
int i=1;
}


如上两个类,我问一下。
b是不是可以继承a中的i?
还问一下,两个类中都有i,这个叫什么啊?覆写?重载?
[/Quote]
答:子类B的i将父类对象中的i给隐藏了。这时,B的对象中含有两个i。若类B与类A在同一个包中,则类B中访问自己的i,可使用:this.i或i,若使用自己空间中包含的那个父类对象中的i时,使用:super.i。
另外:隐藏的另一个情况是:static 类型的方法。
shili150 2008-04-23
  • 打赏
  • 举报
回复
子类可以继承父类的非私有数据和方法,如果要引用父类的数据和方法的话,可以用super,

但这既不是覆盖也不是重载,如果你把他们理解成两个变量的话会更好一些
wyyl00 2008-04-23
  • 打赏
  • 举报
回复
父类成员变量的隐藏
KAKUKYOWU 2008-04-23
  • 打赏
  • 举报
回复
A类中的i和B类中的i没有关系,不是覆盖也不是重载。
A类中的i是A类中的i,B类中的i是B类中的i,他俩原先没有任何关系。
当B类继承了A类后,他俩还是没有任何关系。只不过在B类中可以引用A类(父类)中的i罢了。
-------------------------------------------------------------------------------
public class A {

int i = 6;
}
---------------------------------------------------------------------------------
public class B extends A {

int i = 5;

int a = 0;

B() {

a = super.i;
}

public static void main(String[] args) {

B b = new B();

System.out.println("我是A类的i: " + b.a);

System.out.println("我是B类的i: " + b.i);
}
}
------------------------------------------------------------------------------------------------------
haoxiongok 2008-04-23
  • 打赏
  • 举报
回复
继承只是对方法而言,你所说的继承是父类定义一个公共的可供子类调用的变量(属性),应该不叫继承。
不知道你明白没有
当然,在子类中你也可以重新定义一个i变量
小南瓜瓜 2008-04-23
  • 打赏
  • 举报
回复
没有关系~
wx014 2008-04-23
  • 打赏
  • 举报
回复
两个类中的i没关系的,都是类私有的属性。就好比你爸爸的手不是你的一样
sglbaby 2008-04-23
  • 打赏
  • 举报
回复
那可以说,类b继承了a中的i吗?这个说法对吗?

两个类中的i有什么关系呢?
haoxiongok 2008-04-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sglbaby 的回复:]
那可以说,类b继承了a中的i吗?这个说法对吗?

两个类中的i有什么关系呢?
[/Quote]
子类可以直接取用父类的非私有成员
haoxiongok 2008-04-23
  • 打赏
  • 举报
回复
继承只是继承类里面的方法,当然变量也能够引用
但是好像不是覆写或者重载吧,这都是对方法而言的
sglbaby 2008-04-23
  • 打赏
  • 举报
回复
那可以说,类b继承了a中的i吗?这个说法对吗?

两个类中的i有什么关系呢?
Shine_Panda 2008-04-23
  • 打赏
  • 举报
回复
覆写,重载
是对方法而言
属性没有这么一说.
gshywx 2008-04-23
  • 打赏
  • 举报
回复
他们两个没有什么关系,只不过是巧合名字相同而已,如果你修改成"i"和"o"就一目了然了。
因为这两个只是变量,所以不存重写的问题
但是如果是方法的话,搂主就需要好好看了
如果程序改成
class a
{
void a(){
}
}
class b extends a
{
void a(){
}
}
那么在这种情况下就是重写的问题了
呵呵呵
希望搂主早日解决这些概念问题

Unkown630 2008-04-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 KAKUKYOWU 的回复:]
A类中的i和B类中的i没有关系,不是覆盖也不是重载。
A类中的i是A类中的i,B类中的i是B类中的i,他俩原先没有任何关系。
当B类继承了A类后,他俩还是没有任何关系。只不过在B类中可以引用A类(父类)中的i罢了。
-------------------------------------------------------------------------------
public class A {

int i = 6;
}
------------------------------------------------------------------------…
[/Qoute]
同意,两者没有任何关系!9楼的程序可以说明!!
加载更多回复(21)

62,623

社区成员

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

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