zoukankan      html  css  js  c++  java
  • Java面向对象_多态性、instanceof关键字

    一、多态

    分类:方法的重载与重写;对象的多态性

    对象的多态性向上转型:将子类实例转为父类实例   格式:父类 父类对象=子类实例;是自动转换

                        向下转型:将父类实例转为子类实例   格式:子类 子类对象=(子类)父类实例;是强制转换

    小结:方法的重载与重写就是方法多态性表现;多个子类就是父类中的多种形态;父类引用可以指向子类对象,自动转换;子类对象指向父类引用需要强制转换;在实际开发中尽量使用父类引用(更利于扩展)

    父类设计法则:父类通常情况下都设计为抽象类或接口,其中优先考虑接口,如接口不能满足才考虑抽象类

                        一个具体的类尽可能不去继承另一个具体类,这样的好处是无需检查对象是否为父类的对象

    二、instanceof关键字

    通过这个关键字可以很方便的检查对象的类型,但如果一个父类的子类过多,这样判断就显得繁琐,所以产生了上面的父类设计法则。

    通常在子类中存在父类中没有的方法,而要用父类引用调用时会用到这个关键字进行判断(一般不建议出现此类情况)

     1 public class Practice14 {
     2     
     3     public static void main(String[] args) {
     4         // TODO Auto-generated method stub
     5         //用父类的引用指向子类对象
     6         Cat cat=new YeCat();//自动转换
     7         
     8         //把父类引用转换为子类对象,有可能发生类型转换异常
     9         //instanceof检查对象是否为某个类型
    10         if(cat instanceof HomeCat){
    11         HomeCat h=(HomeCat)cat;}//强制转换
    12         print(cat);
    13 }    
    14     //体现多态,只有在真正使用时才知道是谁跑
    15     public static void print(Cat c){
    16         c.run();
    17     }
    18 }
    19 //抽象类
    20 abstract class Cat{
    21     public abstract void run();
    22 }
    23 
    24 class HomeCat extends Cat{
    25     public void run(){
    26         System.out.println("跑的慢");
    27     }
    28 }
    29 
    30 class YeCat extends Cat{
    31     public void run(){
    32         System.out.println("跑的快");
    33     }
    34 }
  • 相关阅读:
    Oracle Golden Gate
    DNS
    RMAN 管理
    黄伟-RAC生产库现场调整本分策略实战
    Linux下RAID技术
    OCP之黄伟 2
    About NULL Value
    OCP之黄伟
    Table
    Perl的简单变量
  • 原文地址:https://www.cnblogs.com/shenhainixin/p/5067196.html
Copyright © 2011-2022 走看看