2017.9.7学习小结 - 类的封装、继承与多态6

字数 338阅读 23

回顾

六、多态的实现

1.多态的基本概念

2.方法多态性

3.对象多态性

学习小结

3.对象多态性

实现向下转型

package com.Javastudy2;

/**
 * @author Y.W.
 * @date 2017年9月7日 下午11:14:42
 * @Description TODO 实现向下转型
 */
public class P316_12_22 {
    public static void main(String[] args) {
        A1 a = new B1(); // 实例化子类对象
        a.print(); // 调用子类B的print()
        B1 b = (B1) a; // 向下转型,强制转换
        b.getB(); // 子类对象b可找到getB()
    }
}

class A1 {
    public void print() {
        System.out.println("******--父类A:public void print(){}");
    }
}

class B1 extends A1 {
    public void print() { // 方法覆写
        System.out.println("######--子类B:public void print(){}");
    }

    public void getB() { // 此方法为子类扩充的功能
        System.out.println("%%%%%%--子类B:public void getB(){},B类扩充方法。");
    }
}

运行结果:

运行结果1

4.隐藏

利用被关键词static修饰的静态方法是不能被覆写的,来隐藏(Hide)。

package com.Javastudy2;

/**
 * @author YangWang
 * @date 2017年9月7日 下午11:26:28
 * @Description TODO 隐藏子类成员
 */
public class P317_12_23 {
    public static void main(String[] args) {
        Father dad = new Son();
        dad.overWriting();

        Father.overWriting();
        Son.overWritting();
    }
}

class Father {
    public static void overWriting() {
        System.out.println("######--Father method");
    }
}

class Son extends Father {
    public static void overWritting() {
        System.out.println("******--Son method");
    }
}

警告:

IDE警告

运行结果:

运行结果2

隐藏概念只做了解就好,应用不广泛。

七、点拨

1.方法重载(Overload)和覆写(Override)区别

2.this和super的区别

由于两者都可以调用构造方法,所以this()和super()语法只能二选一。

3.final关键字的使用

终结器。

可以修饰三类情况:修饰类、修饰方法及修饰变量。

①使用final修饰的类不能有子类(俗称太监类)

②使用final定义的方法不能被子类覆写

③使用final定义的变量就成了常量

思考

今天先这样吧。习题1的代码已经差不多了,明天补一下习题的,这章就ok了。
一天的学习有效时间也许只有3小时,而我也许就用这3小时学习了Java。
希望这不是自我安慰,买了刘媛媛的课,希望可以改善我的学习方法。

推荐阅读更多精彩内容