《Java入门第二季》第四章 多态

Java 中的多态
1、引用的多态:意思就是父类的句柄既可以持有本类的对象,也可以持有子类的对象。

 

2、方法的多态:注意点是当父类句柄持有子类对象的时候,无法调用子类特有的方法。

 

多态中的引用类型转换
1、重写override的时候有个典型的向下转换,并且在转换之前执行了检查。

 

2、检查向下转换安全性的另一个方法:父对象 instanceof 子类。

 

Java 中的抽象类
1、通常用接口取代抽象类:a)两者都可以作为子类对象的持有者。b)两者都可以约定子类必须实现的方法。c)实现接口相比继承抽象类复杂度更低。

 

2、接口和抽象类的差异在于:抽象只能单继承,而一个类可以实现多个接口。

 

Java 中的接口
1、接口规定了一批类所需要遵守的规范,规定类里必须提供某些方法。

 

2、接口中的属性都是常量,即使定义时不显示设置public static final,系统也会自动加上。(并且不加是一种比较好的习惯,不做多余的事情。)

 

3、接口中的方法都是抽象方法遵守一个接口就必须实现接口中的方法

 

4、使用接口:类实现接口、作为对象持有者、与匿名内部类配合使用

 

5、接口的命名规范:要与类区分,通常I开头或者InterfaceXX

ps:参考阿里的开发手册,接口规范Xxx配合XxxImpl,方法直接void f()而不要加上public abstract等前缀,接口常量也是一样,不要加多余的前缀。

 

匿名内部类(经常与接口配合使用)

/**
 * Created by xkfx on 2017/3/11.
 */
public class TestAnimal {
    public static void main(String[] args) {
        // 使用匿名内部类的第一种方式
        Animal a1 = new Animal() {
            @Override
            public void run() {
                System.out.println("使用匿名内部类的第一种方式");
            }
        };
        a1.run();
        // 使用匿名内部类的第二种方式
        new Animal() {
            @Override
            public void run() {
                System.out.println("使用匿名内部类的第二种方式");
            }
        }.run();
    }
}

 

/**
 *         ┏┓   ┏┓
 *        ┏┛┻━━━┛┻┓
 *        ┃       ┃  
 *        ┃   ━   ┃
 *        ┃ >   < ┃
 *        ┃       ┃
 *        ┃... ⌒ ... ┃
 *        ┃       ┃
 *        ┗━┓   ┏━┛
 *          ┃   ┃ Code is far away from bug with the animal protecting          
 *          ┃   ┃   神兽保佑,代码无bug
 *          ┃   ┃           
 *          ┃   ┃        
 *          ┃   ┃
 *          ┃   ┃           
 *          ┃   ┗━━━┓
 *          ┃       ┣┓
 *          ┃       ┏┛
 *          ┗┓┓┏━┳┓┏┛
 *           ┃┫┫ ┃┫┫
 *           ┗┻┛ ┗┻┛
 */

 

UML 简介(用的并不多)

1、用例图:表达用户需求。

 

2、序列图:对象间的交互关系。

 

3、类图:最常用。

 

posted @ 2017-03-11 19:34  xkfx  阅读(192)  评论(0编辑  收藏  举报