zoukankan      html  css  js  c++  java
  • 多态的详解

    概述

    同一个引用类型使用不同的实例而执行不同的操作,即父类引用子类的对象。

    必要条件

    • 必须要有继承关系
    • 有方法的重写
    • 运行时使用父类应用指向子类对象。

    优缺点

    优点:

    1.消除类型之间的耦合关系
    2.可替换性
    3.可扩充性
    4.接口性
    5.灵活性
    6.简化性

    缺点:

    1.不能使用子类的特有功能

    多态访问成员的特点

    1.访问成员:编译看左边,如果左边没有该变量,编译报错。运行看左边,左边类中的变量值就是运行结果。(编译看左边,执行看左边)

    public class Test {
    	public static void main(String[] args) {
    		Fu f = new Zi();
    		System.out.println(f.age);
    	}
    }
    class Fu{
    	int age  = 10;
    }
    class Zi extends Fu{
    	int age = 20;
    }
    //	结果为10;
    

    2.成员方法:编译看左边,执行看右边。

    public class Test {
    	public static void main(String[] args) {
    		Fu f = new Zi();
    		f.print();
    	}
    }
    class Fu{
    	public void print(){
    		System.out.println("父类成员方法");
    	}
    }
    class Zi extends Fu{
    	public void print(){
    		System.out.println("子类成员方法");
    	}
    }
    //结果为:子类成员方法;
    

    3.静态方法:(编译看左边,执行看右边)

    public class Test {
    	public static void main(String[] args) {
    		Fu f = new Zi();
    		f.print();
    	}
    }
    class Fu{
    	public static void print(){
    		System.out.println("父类成员方法");
    	}
    }
    class Zi extends Fu{
    	public static void print(){
    		System.out.println("子类成员方法");
    	}
    }
    //结果为:父类成员方法;
    

    多态的转型

    向上转型:
    • 格式:
      <父类型><引用变量名> =new <子类型>();
      Fu f = new Zi();
    • 通过父类引用变量调用的成员方法是子类重写或继承父类的方法。
    • 通过父类引用无法调用子类所特有的方法和属性。
    向下转型
    • 格式:
      <子类型><引用变量名> =( <子类型>)<父类型>;
      Zi z = (Zi) f;
    • 在向下转型的过程中,如果没有转成真实子类型,会出现类型转换异常。
    instanceof关键字

    测试左边对象是不是右边类的实例,返回boolean类型值。
    (通常会和向下转型一起用)
    if ( f instanceof Zi){...}

    以上

  • 相关阅读:
    DNS服务器配置
    动态网站技术CGI
    SED单行脚本快速参考(Unix 流编辑器)
    xen 安静的角落
    IP命令
    oracle 监听文件 说明
    LRU ,LRUW,CKPT-Q
    重建控制文件ORA-12720
    历史备份控制文件恢复数据库
    增量检查点和完全检查点
  • 原文地址:https://www.cnblogs.com/fzxey/p/10747316.html
Copyright © 2011-2022 走看看