zoukankan      html  css  js  c++  java
  • 多态性与转型

    方法的多态性

    • 方法的重载:同一个方法名,参数列表不同,可以根据传入的参数类型或个数的不同实现不同功能的执行;

    • 方法的覆写:同一个方法名,参数列表相同,可以根据使用子类的不同有不同的实现。

    对象的多态性:父子实例之间的转换处理

    • 对象向上转型:父类 父类实例 = 子类实例,自动完成转换,并且子类覆写了父类的方法

      • 大多数情况下考虑对象的向上转型

      • 主要特点在于对参数进行统一的设计,有时重载也可解决问题,但是不易维护的

      • 代码实例:
         1 class Message {
         2     public void print() {
         3         System.out.println("Message");
         4     }
         5 }
         6 class DatabaseMessage extends Message {
         7     public void print() {
         8         System.out.println("Connecting to the database...");
         9     }
        10 }
        11 class WebServerMessage extends Message {
        12     public void print() {
        13         System.out.println("Connecting to the web server...");
        14     }
        15 }
      • 使用转型:

        1 class Solution {
        2     public static void main(String[] args) {
        3         Message msg=new DatabaseMessage();
        4         msg.print();
        5     }
        6 }

        也可写成:

         1 class Solution {
         2     public static void main(String[] args) {
         3         func(new DatabaseMessage());
         4         func(new WebServerMessage());
         5     }
         6  
         7     public static void func(Message msg) {
         8         msg.print();
         9     }
        10 }
      • 使用重载(不易维护):

         1 class Solution {
         2     public static void main(String[] args) {
         3         func(new DatabaseMessage());
         4         func(new WebServerMessage());
         5     }
         6 
         7     public static void func(DatabaseMessage msg) {
         8         msg.print();
         9     }
        10 }
    • 对象向下转型:子类 子类实例 = (子类)父类实例,强制完成转换 

      • 在需要使用子类自己的特殊定义时使用

      • 需要先向上再向下,存在隐患

        1 Person per=new Superman();
        2 Superman man=(Superman) per;

        ==> 使用关键字 instanceof 来判断

    Object类

    • Object类是所有类的父类,因此可以用Object类接受所有的类和包括数组的所有引用类型

  • 相关阅读:
    解决UITableView中Cell重用机制导致内容出错的方法总结
    Hdu 1052 Tian Ji -- The Horse Racing
    Hdu 1009 FatMouse' Trade
    hdu 2037 今年暑假不AC
    hdu 1559 最大子矩阵
    hdu 1004 Let the Balloon Rise
    Hdu 1214 圆桌会议
    Hdu 1081 To The Max
    Hdu 2845 Beans
    Hdu 2955 Robberies 0/1背包
  • 原文地址:https://www.cnblogs.com/irisiscool/p/13083534.html
Copyright © 2011-2022 走看看