zoukankan      html  css  js  c++  java
  • 面向对象三大特征------多态

    什么是多态?

    父类引用变量可以指向子类对象 但是前提必须是子父类继承关系或者是接口关系,否则无法完成多态,在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。

    多态的定义格式:

    父类类型  变量名 = new 子类类型();

    变量名.方法名();

    package com.oracle.demo02;
    //抽象类
    public abstract class Person {
    
    }
    
    
    //接口类
    public interface Smoking {
    
    }
    

      

    package com.oracle.demo02;
    
    public class Student extends Person {
    
    }
    
    
    public class Work implements Smoking {
    
    }
    

      

    package com.oracle.demo02;
    
    public class Demo {
    	public static void main(String[] args) {
    		/*普通类子父类之间的多态:
    		     父类类型 变量名 =new 子类类型();
    		*/
    		Fu fu=new Zi();
    		
    		/*抽象类与普通类的多态*/
    		Person p=new Student();
    		
    		/*接口与普通类的多态*/
    		Smoking s=new Work();
    		
    	}
    }
    

    多态的成员特点:

    多态中调用(成员变量)的特点
    编辑运行都看左边。
    运行时,走父类成员变量的值

    多态中调用(成员方法)的特点
    编译看左边,运行看右边

    instanceof:判断对象属于哪种数据类型

    向上转型:

    当有子类对象赋值给一个父类引用时,便是向上转型,多态本身就是向上转型的过程。

    父类类型  变量名 = new 子类类型();

    如:Person p = new Student();

     向下转型:

    一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用转为子类引用,这个过程是向下转型。如果是直接创建父类对象,是无法向下转型的!

    子类类型 变量名 = (子类类型) 父类类型的变量;

    如:Student stu = (Student) p;  //变量p 实际上指向Student对象

    什么时候使用向下转型:

    当要使用子类特有功能时,就需要使用向下转型。

  • 相关阅读:
    学习另外一门技术,叫Python
    子报表显示Total Page Count或Page Number
    Insus.NET是Leo Yeung的网名
    C# 以管理员身份运行WinForm程序
    python 里 certifi 库的作用
    CEF中文教程(google chrome浏览器控件) -- CEF简介CEF中文教程(google chrome浏览器控件) -- CEF简介
    CefInitialize崩溃 && Cef白屏
    Chrome设置
    CEF 开启webGl功能
    Qt5.9.1结合CEF开发基于chorm的浏览器(二)
  • 原文地址:https://www.cnblogs.com/awdsjk/p/10913974.html
Copyright © 2011-2022 走看看