zoukankan      html  css  js  c++  java
  • 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);
            
            
        }
        
    
        
    }
  • 相关阅读:
    如何把一个用户加入sodu组
    linux bond配置步骤,七种bond模式说明
    python 面向对象(进阶篇)
    lnmp搭建的常见错误
    Linux运维人员如何学习python编程
    运维日常工作知识总结
    《JS原型》
    《读王福朋有感》
    《使用Win32DiskImager安装Ubuntu16.04》
    因为无耻的查重系统,我删除了四篇随笔
  • 原文地址:https://www.cnblogs.com/flashweb/p/2965761.html
Copyright © 2011-2022 走看看