第8章 多态

8.2

**总结 private的方法可以看作是final类型的,这样在子类中是无法被重写的,子类中实际上是可以看作为一个新的方法
**
练习10,page155,创建一个包含两个方法的基类,咋i 第一个方法中可以调用第二个方法。然后产生一个继承自该基类的子类,且覆盖基类汇总的第二个方法,为子类创建一个对象,将它向上转型为基类,并调用第一个方法

父类:ride中调用didi
package main.chapter8;

/**
 * base class
 *
 * @author
 * @create 2019-04-10 上午12:16
 **/
public class Cycle {

    public void ride(){
        System.out.println("cycle ride");
        didi();
    }

    public void sayHi(){
        System.out.println("this is cycle");
    }

    public void didi(){
        System.out.println("cycle didi");
    }
}

子类,重写方法didi

package main.chapter8;

/**
 * child class
 *
 * @author
 * @create 2019-04-10 上午12:18
 **/
public class Unicycle extends Cycle {

    
    @Override
    public void sayHi() {
        System.out.println("this is unicycle");
    }

    @Override
    public void didi() {
        System.out.println("unicycle didi");
    }
}

执行类

package main.chapter8;

/**
 * 执行类
 *
 * @author
 * @create 2019-04-10 上午12:19
 **/
public class Excutetest {

    public static void test(Cycle cycle){
        cycle.ride();
        cycle.sayHi();
    }

    public static void main(String[] args){

        test(new Unicycle());

    }
}

输出:
cycle ride
unicycle didi
this is unicycle

8.2.5

父类:

package main.chapter8;

/**
 * Super类
 *
 * @author
 * @create 2019-04-11 上午12:17
 **/
public class Super {

    public int field = 0;
    public int getField(){return field;}
}

子类

package main.chapter8;

/**
 * Sub class
 *
 * @author
 * @create 2019-04-11 上午12:18
 **/
public class Sub extends Super {

    public int field = 1;
    public int getField(){return field;}
    public int getSuperField(){return super.field;}
}

测试类:

package main.chapter8;

/**
 * 执行类
 *
 * @author
 * @create 2019-04-10 上午12:19
 **/
public class Excutetest {

    public static void test(Cycle cycle){
        cycle.ride();
        cycle.sayHi();
    }

    public static void main(String[] args){

//        test(new Unicycle());

        Super sup = new Sub();
        System.out.println("sup.field = "+sup.field +
        ", sup.getField() =" + sup.getField());

        Sub sub = new Sub();
        System.out.println("sub.field = "+sub.field+", sub.getField() ="+sub.getField() +
        ", sub.getSuperField() =" + sub.getSuperField());

    }
}

你可能感兴趣的:(第8章 多态)