java 初学之三 多态和抽象类

采取递进的方式,了解比较好些。

多态的两种方式:

第一种方式

package abstr;

//P75 Example 4_20

 class 动物 {
     void cry(){}
}

classextends 动物{
    void cry() { System.out.println("汪汪....."); }
}
classextends 动物{
    void cry() { System.out.println("喵喵....."); }
}

public class A {
    public static void cry(动物 dongwu) {
        dongwu.cry();
    }
    
    public static void main(String[] args) {

        狗 gou=new 狗();
        cry(gou);
        猫 mao=new 猫();
        cry(mao);
        
        
    }
    

    
}

第二种方式

package abstr;

//P75 Example 4_20

 class 动物 {
     void cry(){}
}

classextends 动物{
    void cry() { System.out.println("汪汪....."); }
}
classextends 动物{
    void cry() { System.out.println("喵喵....."); }
}

public class A {

    public static void main(String[] args) {
        动物 dongwu;
        dongwu=new 狗();
        dongwu.cry();
        dongwu=new 猫();
        dongwu.cry();
    
    } 
}

上边的的例子是比较著名的关于多态的例子,我们往往会倾向于第一种用的比较多,不过这个也是在于编程人员自己的习惯。

总结一下的多态的特点:

1、继承

2、子类重写父类的方法

3、上转型

多态的好处:

对不同的对象采取统一的处理。

关于上边的例子:不是每一个子类都必须要重写父类的方法,为了是子类必须要重写父类的方法,所以我们引入了“抽象类”的概念。

关键字:abstract :尚未完成,表示必须要子类必须完成的任务。

抽象类的作用:就是用来派生子类,被别的类所继承。注意不能实例化。

上边的例子完美化:

package abstr;

//P75 Example 4_20

abstract class 动物 {
    abstract void cry();
}

classextends 动物{
    void cry() { System.out.println("汪汪....."); }
}
classextends 动物{
    void cry() { System.out.println("喵喵....."); }
}

public class A {
    public static void cry(动物 dongwu) {
        dongwu.cry();
    }
    
    public static void main(String[] args) {

        狗 gou=new 狗();
        cry(gou);
        猫 mao=new 猫();
        cry(mao);
        
        
    }
    

    
}
原文地址:https://www.cnblogs.com/flashweb/p/2965761.html