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对象

    什么时候使用向下转型:

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

  • 相关阅读:
    配置 Linux 服务器 SSH 安全访问的四个小技巧
    线性代数
    转载的其它人博客
    c#下dll引入错误的问题
    游戏中简单代码
    明年的任务
    c# 异步通信网络中存在的问题
    解决导入五万条数据缓慢问题
    c#中关于结构体和字节数组转化
    写给现在的自己
  • 原文地址:https://www.cnblogs.com/awdsjk/p/10913974.html
Copyright © 2011-2022 走看看