首页 > 其他分享 >多态

多态

时间:2022-11-20 16:47:41浏览次数:34  
标签:子类 多态 Person Student 父类 public

多态

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

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

  • 多态存在的条件

    • 有继承关系
    • 子类重写父类方法
    • 父类引用指向子类对象
  • 注意: 多态是方法的多态,属性没有多态性。

  • instanceof 类型转换(引用类型)

  • package com.oop.demo06;
    
    public class Person {
        public void run(){
            System.out.println("run");
        }
    }
    
    /*
    多态的注意事项:
    1.多态是方法的多态,属性没有多态
    2.父类和子类,有联系。
    (两个没有联系--->类型转换异常!==> ClassCastException!)
    3.继承的存在条件:有继承关系,方法需要重写,父类引用指向子类对象!
        Father f1 = new Son();
    
     */
    
    //-------------------------------------------------------
    package com.oop.demo06;
    
    public class Student extends Person {
        @Override
        public void run() {
            System.out.println("son");
        }
    
        public void eat(){
            System.out.println("eat");
        }
    }
    //-------------------------------------------------------
    package com.oop;
    
    import com.oop.demo06.Person;
    import com.oop.demo06.Student;
    
    public class Application {
        public static void main(String[] args) {
            // 一个对象的实际类型是确定的,但可以指向的引用类型是不确定的
            //Student能调用的方法都是自己的或者继承父类的!
            Student s1 = new Student();
            //Person(父类型),可以指向子类,但是不能调用子类独有的方法
            Person s2 = new Student(); //父类的引用指向子类
            Object s3 = new Student();
    
            //对象能执行哪些方法,主要看对象左边的类型,和右边关系不大!
            s2.run();//若子类重写了父类的方法,则执行的是子类的方法
            s1.run();
            s1.eat();
            //s2.eat(); //Person(父类型),可以指向子类,但是不能调用子类独有的方法
            ((Student)s2).eat();//类型强制转换(把s2(Person类)强制转换为Student类)可以实现
        }
    }
    
    

标签:子类,多态,Person,Student,父类,public
From: https://www.cnblogs.com/wangzhizhi/p/16908808.html

相关文章

  • C++初阶(封装+多态--整理的自认为很详细)
    继承概念:继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程......
  • 101:面向对象的三大特征说明(封装、继承、多态)
    ###面向对象三大特征介绍Python是面向对象的语言,也支持面向对象编程的三大特性:继承、封装(隐藏)、多态。###封装(隐藏)   隐藏对象的属性和实现细节,只对外提供必要的......
  • 面向对象编程三大特性------封装、继承、多态(概念理解,应用举例)
    1.面向对象&面向过程面向过程思想步骤清晰简单,第一步做什么,第二步做什么....面向过程适合处理一些简单的问题。面向对象思想物以类聚,在思考问题解决方案时会先......
  • 多态
    介绍多态指为不同数据类型的实体提供统一的接口,或者使用一个单一的符号来表示多种不同的类型。分类特设多态特设多态是程序设计语言的一种,多态函数有多个不同的实现,依赖......
  • 封装,继承(super,this,方法重写),多态--JAVA
    一、封装封装:就是把抽象出的数据【属性】和对数据的操作【方法】封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作才能对数据进行操作  publicclass......
  • 第12章 面向对象编程:多态性
    12.1简介程序通用化12.2多态性介绍:多态视频游戏12.3类继承层次中对象之间的关系12.4类型域和switch语句12.5抽象类和纯virtual函数跟一个表格有关12.6实例研究......
  • 封装,继承,多态
    super1.super调用父类的构造方法,必须在构造方法第一个2.super必须只能出现在子类的方法或构造方法中3.super和this不能同时调用构造方法Vsthis:代表......
  • 多态性、instanceof关键字
    目录多态性向下转型instanceof关键字多态性理解多态性:可以理解为一个事物的多种形态。何为多态性:对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)多......
  • java——继承与多态——内部类001
    内部类的概念与分类:           成员内部类的定义:                 成员内部类的使用:      ......
  • 类和对象——多态
    多态:多种状态——一般说多态都指动态多态多态的优点(体现于练手1):●代码组织结构清晰●可读性强●利于前期和后期的扩展以及维护多态分为两类:●静态多态:函数重载和......