当前位置: 技术问答>java相关
关于overload和override方法的问题?
来源: 互联网 发布时间:2015-03-01
本文导语: public class Shadow2 { String s = "main"; public static void main(String s[]) { S2 s2 = new S2(); // Produces an output - S1, S2 S1 s1 = new S1(); System.out.println(s1.getS()); System.out.println(s2.getS()); } } class S1 { String...
public class Shadow2 {
String s = "main";
public static void main(String s[]) {
S2 s2 = new S2();
// Produces an output - S1, S2
S1 s1 = new S1();
System.out.println(s1.getS());
System.out.println(s2.getS());
}
}
class S1 {
String s = "S1";
public String getS() {
return s;
}
}
class S2 extends S1{
String s = "S2";
}
输出结果是S1 S1 我想在classs S2 增加点代码。使输出结果为S1 S2。
如何实现?
String s = "main";
public static void main(String s[]) {
S2 s2 = new S2();
// Produces an output - S1, S2
S1 s1 = new S1();
System.out.println(s1.getS());
System.out.println(s2.getS());
}
}
class S1 {
String s = "S1";
public String getS() {
return s;
}
}
class S2 extends S1{
String s = "S2";
}
输出结果是S1 S1 我想在classs S2 增加点代码。使输出结果为S1 S2。
如何实现?
|
继承概念里的域隐藏,也就是说子类可以定义一个和父类同名的域,这样的话就把父类的同名域给隐藏了.访问的时候,如果用子类从父类继承的方法来访问这个域名,那么访问的是父类被隐藏的域.如果用子类自己定义的方法来访问这个域名,那么访问的是子类定义的域.
明白后你只要在class S2里覆盖父类S1里的方法public String getS()就可以了.代码如下:
class S2 extends S1
{
String s = "S2";
public String getS()
{
return s;
}
}
明白后你只要在class S2里覆盖父类S1里的方法public String getS()就可以了.代码如下:
class S2 extends S1
{
String s = "S2";
public String getS()
{
return s;
}
}