关于this问题,大家来帮帮忙吧!

java_days 2010-04-10 08:34:24
类 A 有个无参构造 方法,在这个无参构造方法 中 用到了this

类 B 继承 类A,


在main方法中实例化一个 类B的对象,这个时候会调用A的无参构造方法吧?

那这个时候的this 是代表 类B的吗?
...全文
84 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZangXT 2010-04-10
  • 打赏
  • 举报
回复
是的,属性以及static的东西本无多态之说。
java_days 2010-04-10
  • 打赏
  • 举报
回复
是不是 属性不能多态 覆盖属性 不能实现多态,,
只有方法才可以
java_days 2010-04-10
  • 打赏
  • 举报
回复
顶啊,不搞清楚,不睡觉
java_days 2010-04-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zangxt 的回复:]
可以很垃圾的实现,实际编程不要用。

Java code

public class Test {

public static void main(String[] args) {
B b = new B();
System.out.println(b.value);
}
}

class A {
private ……
[/Quote]

this我刚才测试了一下,

public class Test {

public static void main(String[] args) {
B b = new B();
System.out.println(b.value);
}
}

class A {
public int value;
public A() {
System.out.println(this.getClass());
this.value = 10;
}
public void sub_init() {
}
}

class B extends A {
public int value;
public void sub_init() {
this.value = 10;
}
}


打印出 class B
0

既然是代表b 那么就应该是 b.value=10啊。为什么不能改变了?对属性不起作用吗?不能覆盖属性吗?
只能覆盖方法吗?
xiangjiang5011 2010-04-10
  • 打赏
  • 举报
回复
B继承A,B中拥有A中的方法,如果this. 属性在B中没有,就调用A中的属性,否则是B中的属性
java_days 2010-04-10
  • 打赏
  • 举报
回复
谢谢你的提醒啊,我想到一个办法,但是还差一点,你能帮我一下吗?


public class Test {

public static void main(String[] args) {
B b = new B();
System.out.println(b.sub_init()); //这里报错
}
}

class A implements M {
private int value;
public A() {

this.sub_init();//多态
}
public void sub_init() {
this.value=10;
}
}

class B extends A {
public int value;

}


interface M{
public void sub_init();
}

ZangXT 2010-04-10
  • 打赏
  • 举报
回复
如果用c++之类的可以直接操作内存的说不定可以试试。java就别想了
java_days 2010-04-10
  • 打赏
  • 举报
回复
如果能在 A里面实现,B里面不需要写任何代码,就好了
java_days 2010-04-10
  • 打赏
  • 举报
回复
谢谢了,很不错了
ZangXT 2010-04-10
  • 打赏
  • 举报
回复
可以很垃圾的实现,实际编程不要用。

public class Test {

public static void main(String[] args) {
B b = new B();
System.out.println(b.value);
}
}

class A {
private int value;
public A() {
this.value = 10;
sub_init();//多态
}
public void sub_init() {
}
}

class B extends A {
public int value;
public void sub_init() {
this.value = 10;
}
}

java_days 2010-04-10
  • 打赏
  • 举报
回复
首先谢谢你啊,但是 我是想完成这样的功能,

在 类A 的构造方法中用this, 在 new 一个类B的 实例 后 能通过 类A构造方法里的this代表 子类,来为这个对象 的某个属性 赋值,请问这样可以吗?
ZangXT 2010-04-10
  • 打赏
  • 举报
回复
郁闷,看错基类了。
谁定义的在谁的构造方法里面初始化。
java_days 2010-04-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zangxt 的回复:]
A(){super.value=……
[/Quote]


这样的 话 会报错啊 ,不存在super.value
LuoJavacheng 2010-04-10
  • 打赏
  • 举报
回复
顶一下······
ZangXT 2010-04-10
  • 打赏
  • 举报
回复
A(){super.value=……
java_days 2010-04-10
  • 打赏
  • 举报
回复

public class Test {


public static void main(String[] args) {
B b = new B();

System.out.println(b.value);

}

}


class A{

private int value;


public A(){
this.value=10;
}
}

class B extends A{
public int value;

}


我刚才测试了一下,B的value值是0,
能不能让b的value值 变成10吗??

ZangXT 2010-04-10
  • 打赏
  • 举报
回复
http://blog.csdn.net/ZangXT/archive/2009/09/24/4587985.aspx
以前写的点东西,可以大体对照一下。
xiufuyu 2010-04-10
  • 打赏
  • 举报
回复
顶一下~~
ZangXT 2010-04-10
  • 打赏
  • 举报
回复
会调用。此时this可以理解为类型为A的引用,但指向的是B类对象。

62,615

社区成员

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

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