首页 > 其他分享 >多态

多态

时间:2022-10-01 18:55:05浏览次数:57  
标签:子类 多态 Student new 父类 public

多态

  • 动态编译:类型

  • 即同一方法可以根据发送对象的不同而采用多种不同的行为方式

  • 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多

  • 多态存在的条件

    有继承关系

    子类重写父类方法

    父类引用指向子类对象

  • 注意:多态是方法的多态,属性没有多态性

  • instanceof

===========================================================

代码演示---父类Person

package com.tea.Demo06;

public class Person {

   public void run(){
       System.out.println("run");
  }
}

代码演示---子类Student

package com.tea.Demo06;

public class Student extends Person{

   @Override
   public void run() {
       System.out.println("son");
  }

   public void eat(){
       System.out.println("eat");
  }
}

==========================================================

代码演示---测试类

package com.tea.Demo06;

public class Application {
   public static void main(String[] args) {
       //一个对象的实际类型是确定的
       //new Student()
       //new Person()

       //可以指向的引用类型就不确定了

       Student s1 = new Student();  //能调用自己的或者父类的

       Person s2 = new Student();   //只能调用自己的方法,而不能调用子类独有的

       Object s3 = new Student();

       s2.run();
       s1.run();

       //s2.eat();报错,因为eat方法是子类独有的方法,父类无法调用
       s1.eat();
  }
}

==========================================================

多态的注意事项

  1. 多态是方法的多态

  2. 父类和子类,有联系,类型转换异常!ClassCastException

  3. 存在条件:继承关系,方法需要重写,父类引用指向子类对象 Father f1 = new Son();

  4. 以下方法不可以重写:

    • static方法是静态的,属于类,不属于实例

    • final 常量

    • private方法

==========================================================

标签:子类,多态,Student,new,父类,public
From: https://www.cnblogs.com/bobocha/p/16747596.html

相关文章

  • 封装,继承,多态
    封装属性私有get/set(有时候设置安全性的判断)提高程序的安全性,保护数据隐藏代码的实现细节同意接口系统可维护增加了继承继承的本质是对某一批嘞的抽象,......
  • 我学习 C++ 运行时多态性的方法
    我学习C++运行时多态性的方法我的简短故事与实施原因。我希望你能明白我做了什么。我创建了一个设计文档。这有望帮助其他人理解我的解决方案。这是链接到员工工厂源代......
  • C#:多态之虚方法、抽象类、接口、 类的序列化、MD5加密。
     (总的来说多态的作用便是解决代码的冗余问题,但代码更加具有可读性,更加的简洁)多态的第一种表现形式:虚方法usingSystem;usingSystem.Collections.Generic;usingSystem......
  • 面向对象---多态的基础语法
    多态的基础语法Q:什么是多态?A:多种形态,多种状态。学习多态基础语法之前,我们需要普及两个概念。注意---java中允许向上转型,也允许向下转型无论是向上转型,还是向下转型,两......
  • 面向对象编程三大特征(封装、继承和多态)
    1基本介绍面向对象编程有三大特征:封装、继承和多态。2封装介绍3封装的理解和好处4封装的实现步骤(三步)5案例不能随便查看人的年龄,工资等隐私,并对设置的年......
  • 13.5 多态的实现
     classStudent:def__init__(self,name,age):self.name=nameself.age=agedef__str__(self):#object中有__str__()方法,用于对......
  • 类与对象——多态
     多态的基本概念多态是C++面向对象三大特性之一多态分为两类静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态静......
  • python 封装、抽象、多态和继承的实现
    封装的实现#封装classpeople:def__init__(self,name,money):self.name=nameself.__money=money#私有属性,只能类的内部使用--》数据封装......
  • C#-多态
    在派生类中重写基类的虚方法虚方法的重写publicvirtualvoidMove(){}publicoverridevoidMove(){}classVehicle{stringname;......
  • 多态的弊端
    不转型的话,不能使用子类特有的属性和行为classDemo_SuperMan{publicstaticvoidmain(String[]args){Personp=newSuperMan();//父类引用指向......