编程语言
首页 > 编程语言> > java编程思想第四版第八章总结

java编程思想第四版第八章总结

作者:互联网

1. 多态的含义

2. 方法的调用

package net.mindview.polymorphism;
//乐器
class Instrument {
    public void play(Note i){
        System.out.println("Instrument.play() ");
    }
}

//风管乐器
class Wind extends Instrument { @Override public void play(Note i) { System.out.println("Wind.play() "); } } public class Music { //曲调 public static void tune(Instrument i){ i.play(Note.MIDDLE_C); } public static void main(String[] args) { Wind wind = new Wind(); tune(wind); } }

  分析:这里有一个行为很特殊, 就是tune方法,他传递的参数Instrument,调用的也是Instrument的play方法,那么当我在Music中传递一个wind给tune时,他会知道我要调用的方法应该是Wind总的play方法,而不是Instrument中的方法么?是的, 可以.这个过程在前期绑定的时候肯定是不知道的, 他是在后期绑定的时候知道的. 

下面来说说什么是绑定?

 

3. 什么样的程序是可扩展的?

4. 静态方法不具有多态性. 调用的时那个对象的方法,执行的就是那个对象的方法, 不会向上转型

5.构造器调用的顺序

  1. 调用基类构造器, 逐级向上
  2. 按声明顺序调用成员的初始化方法
  3. 调用导出类构造器 

 6.忠告: 编写构造器的时候, 用尽可能简单的方法是对象进入正常状态,尽量避免调用其他方法

 7.协变返回类型

package net.mindview.polymorphism;
class Grain {
    @Override
    public String toString() {
        return "Grain";
    }
}

class Wheat extends Grain {
    @Override
    public String toString() {
        return "Wheat";
    }
}

class Mill {
    Grain process(){
        return new Grain();
    }
}

class WheatMill extends Mill {
    Wheat process(){
        return new Wheat();
    }
}


public class GovariantReturn {

    public static void main(String[] args) {
        Mill m = new Mill();
        Grain g = m.process();
        System.out.println(g);
        
        WheatMill w = new WheatMill();
        Wheat wh = w.process();
        System.out.println(wh);

    }

}

 

8.纯继承

 

标签:绑定,java,编程,class,Grain,第四版,Wheat,方法,public
来源: https://blog.51cto.com/u_15091061/2856414