class Cleanser
{
private String s = new String("Cleanser");
public void append(String a) {s=s + " " +a+ " ";}
public void dilute() {append("dilute()");}
public void apply() {append("apply()");}
public void scrub() {append("scrub()");}
public String toString() {return s;}
public static void main(String [] args)
{
Cleanser x = new Cleanser();
x.dilute();
x.apply();
x.scrub();
System.out.println(x);
}
}
public class Detergent extends Cleanser
{
public void scrub()
{
append("Detergent.scrub()");
super.scrub();
}
public void foam()
{
append("foam()");
}
public static void main(String [] args)
{
Detergent x = new Detergent();
x.dilute();
x.apply();
x.scrub();
x.foam();
System.out.println(x);
System.out.println("Testing base class");
Cleanser.main(args);
}
}
我觉得在类Detergent中应该看不到变量s(private String s) 那下面的x.dilute();这些调用就要用到s 怎么就没出错了呢
{
private String s = new String("Cleanser");
public void append(String a) {s=s + " " +a+ " ";}
public void dilute() {append("dilute()");}
public void apply() {append("apply()");}
public void scrub() {append("scrub()");}
public String toString() {return s;}
public static void main(String [] args)
{
Cleanser x = new Cleanser();
x.dilute();
x.apply();
x.scrub();
System.out.println(x);
}
}
public class Detergent extends Cleanser
{
public void scrub()
{
append("Detergent.scrub()");
super.scrub();
}
public void foam()
{
append("foam()");
}
public static void main(String [] args)
{
Detergent x = new Detergent();
x.dilute();
x.apply();
x.scrub();
x.foam();
System.out.println(x);
System.out.println("Testing base class");
Cleanser.main(args);
}
}
我觉得在类Detergent中应该看不到变量s(private String s) 那下面的x.dilute();这些调用就要用到s 怎么就没出错了呢
解决方案 »
- 继承中,子类向父类转型后的一些疑问
- Java正则匹配“
- 小妹郁闷死了,各位大侠救命啊!关于SOCKET和多线程的问题。error J0082: Class 'Server' doesn't have a constructor that matches 'Ser
- 这个问题很奇怪!!!
- 在线送分,选择Jlist里某项的事件是什么?
- 请问在j2sdk1.4.2中可以进行数据库编程吗?
- 求救!vc 客户端的socket 与 java服务器 通信失败。sos!!!
- 请大家帮帮我解决一个有关JDBC的问题,谢谢先
- JBuilder中如何计算日期类型
- 在此有没有LOUTS高手
- JDBC 连接缓冲池 配置 问题
- 请问这是什么错误呀,我环境变量都配好了
x是一个Detergent对象,这个对象继承了Cleanser类,那么就可以通过Detergent的对象访问dilute方法,而这个方法在Cleanser中通过append方法操作Cleanser自己的私有变量是合法的...
{
private int i=1;
public int j=2;
public void aa()
{
System.out.println(i + " " + j);
}
}
class Test extends A
{ public static void main(String [] args)
{
Test t = new Test();
t.aa();
}
}当Test类继承了类A Test类就有了个aa()方法
class A
{
private int i=1;
public int j=2;
}
class Test extends A
{
public void aa()
{
System.out.println(i + " " + j);
}
public static void main(String [] args)
{
Test t = new Test();
t.aa();
}
}
那我这样,类A没有aa()方法,而我呢自己写个aa()方法
这样和继承到的aa()方法有什么区别吗?
x是一个Detergent对象,这个对象继承了Cleanser类,那么就可以通过Detergent的对象访问dilute方法,而这个方法在Cleanser中通过append方法操作Cleanser自己的私有变量是合法的...不是有个this的吗 x.dilute(); this是x; 就会调用 x.append("apply()") 那append()方法里的s 还是应该是this.s也就是x.s啊,怎么就变Cleanser的s了呢??????????