解决方案 »
- 小鸟写了一个GUI考试系统
- 关于Rmi远程访问的问题 请各位高手帮忙!
- 函数返回值的问题,为什么TRY里的语句没起到作用~~~~~~,请帮我看看,谢谢
- JCreator高手请进!!
- java jacob选中全文
- 高分!! Where can i find open-source IP v6 Stack Java implementation
- 一道java的题目,应该不难,进来看一下
- 能否用jdbc-odbc bridge 存储BLOB字段
- int类型的数据的引用问题
- IO(TCP程序设计)编程的一些问题请教
- swt.win32.extension的问题,高手进
- 怎么解决java could not find the main class
Son s = new Son("木工","修车","音乐");// 还不是一样?
鉴定完毕
Son s = f.createSon("音乐"); //此方法中构造Son对象,并将Father的技能赋予Son对象
一般而言,用继承来表达"爸爸会“木工”和“修车”,儿子在继承老爸的光荣传统后还会点音乐"的话,
多数是这样举例的..
class Father{
Father(){
}
public void 木工(){
}
public void 修车(){
}
}class Son extends Father{
Son(){
}
public void 音乐(){
}
} 因为"行为"通常用方法来表示
不是还有多态吗?
Father son = new Son ("木工","修车","音乐");
这样也不错~~~
public class Test{
public static void main(String[] args) {
Son s = new Son("木工", "修车");
s.setC("音乐");
System.out.println(s.a + " " + s.b);
System.out.println(s.a + " " + s.b + " " + s.c);
}
}
class Father{
String a;
String b;
public Father1(String a, String b) {
this.a = a;
this.b = b;
}}class Son extends Father{
String c;
public Son(String a, String b) {
super(a, b);
}
public String getC() {
return c;
} public void setC(String c) {
this.c = c;
}
}
子类构造前,是必须实现父类的构造方法的,super()就解决了这个问题(如果是无参构造,此步可略)。而且super()方法应该在子类构造方法中的第一句代码,因为,父类没有构造出来之前,子类就不可能构造出来的。
换个易懂的意思就是,没得父亲,哪来的儿子。
的确这里感觉怪怪的~~
Father f = new Father("木工","修车");
Son s = new Son(f.a,f.b,"音乐");不需要这么复杂吧。 直接
Son s = new Son("木工","修车","音乐");不就可以了吗?
Son s = new Son(f.a,f.b,"音乐"); 这句话 有点怪
public class TestExtend {
public static void main(String[] args){
Father f = new Father("木工","修车");
Son s = new Son(f.a,f.b,"音乐");
System.out.println(f.a + " " + f.b);
System.out.println(s.a + " " + s.b + " " + s.c);
}父子类编写无任何问题,在mian方法中,你的调用方式显得不叫不舒服,当别人不知道你的father和son的父子类关系时也就无所谓了。所以只是lz多虑了,你是在知道父子关系后写的调用,调用中父类和子类的出现顺序会影响你这种编码的意义,所以存在一定得依赖性。代码上并不存在问题
Father f = new Father("木工","修车");
Son s = new Son(f.a,f.b,"音乐");
System.out.println(f.a + " " + f.b);
System.out.println(s.a + " " + s.b + " " + s.c);这段代码从面向对象来说是有问题的, 还真以为F 是 S的父亲吗?
看这个实例化过程。
首先 new 一个f ,然后 new 一个 f,但在new f的时候其实已经 隐性再调用了 new Father;
只是这个 new Father用的值也是("木工","修车"),但本质上却是另一个对象。
其实前几楼也说过,这么写Son s = new Son("木工","修车","音乐");就行了。