首页 > 编程语言 >JavaSE——面向对象三大特征之—多态

JavaSE——面向对象三大特征之—多态

时间:2023-03-06 22:56:29浏览次数:39  
标签:name age 多态 void JavaSE 父类 public 三大

多态的形式

多态是继封装、继承之后,面向对象的第三大特性。

多态是出现在继承或者实现关系中的

多态体现的格式

父类类型 变量名 = new 子类/实现类构造器;
变量名.方法名();

多态的前提:有继承关系,子类对象是可以赋值给父类类型的变量。例如Animal是一个动物类型,而Cat是一个猫类型。Cat继承了Animal,Cat对象也是Animal类型,自然可以赋值给父类类型的变量。

多态的使用场景

要注意的是:

  • 当一个方法的形参是一个类,我们可以传递这个类所有的子类对象。

  • 当一个方法的形参是一个接口,我们可以传递这个接口所有的实现类对象(后面会学)。

  • 而且多态还可以根据传递的不同对象来调用不同类中的方法。

 

多态的定义和前提

多态: 是指同一行为,具有多个不同表现形式。

从上面案例可以看出,Cat和Dog都是动物,都是吃这一行为,但是出现的效果(表现形式)是不一样的。

前提【重点】

  1. 有继承或者实现关系

  2. 方法的重写【意义体现:不重写,无意义】

  3. 父类引用指向子类对象【格式体现】

    父类类型:指子类对象继承的父类类型,或者实现的父接口类型。

     

package com.zhao.a01polymorphismdemo1;

public class Person {
    //父类
    private String name;
    private int age;

    public Person() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //方法
    public void show(){
        System.out.println(name+" "+age);
    }
}
package com.zhao.a01polymorphismdemo1;

public class Student extends Person{
    @Override
    public void show() {
        System.out.println("学生的信息为:"+getName()+" "+getAge());
    }
}
package com.zhao.a01polymorphismdemo1;

public class Adminstrator extends Person{
    @Override
    public void show() {
        System.out.println("管理员的信息为:"+getName()+" "+getAge());
    }
}
package com.zhao.a01polymorphismdemo1;

public class Teacher extends Person{
    @Override
    public void show() {
        System.out.println("老师的信息为:"+getName()+" "+getAge());
    }
}
package com.zhao.a01polymorphismdemo1;

public class Test {
    public static void main(String[] args) {
        Student s=new Student();
        s.setAge(18);
        s.setName("张三");
        register(s);

        Teacher t=new Teacher();
        t.setAge(28);
        t.setName("李四");
        register(t);

        Adminstrator a=new Adminstrator();
        a.setAge(29);
        a.setName("王五");
        register(a);


    }

    //这个方法既能接收老师,又能接收学生,还能接收管理员
    //只能把参数写成这三个类的父类
    public static void register(Person p){
        p.show();
    }
}

 

标签:name,age,多态,void,JavaSE,父类,public,三大
From: https://www.cnblogs.com/javaHane/p/17185806.html

相关文章

  • JavaSE——继承练习
    编写父类packagecom.zhao.test;//父类publicclassEmployee{privateStringempId;privateStringname;privatedoublesalary;publicString......
  • C++重写(覆盖)、重载、重定义、多态
    引用:https://www.cnblogs.com/DannyShi/p/4593735.html1重写(覆盖)overrideoverride是重写(覆盖)了一个方法,以实现不同的功能。一般用于子类在继承父类时,重写(覆盖)父类......
  • JavaSE——学生管理系统(控制台)
    学生管理系统实现步骤案例需求针对目前我们的所学内容,完成一个综合案例:学生管理系统。该系统主要功能如下:添加学生:通过键盘录入学生信息,添加到集合中删除学生:通过......
  • JavaSE——ArrayList集合练习
    packagecom.zhao.test2;publicclassPhone{privateStringlogo;privateIntegerprice;publicPhone(){}publicPhone(Stringlogo,I......
  • JavaSE——集合ArrayList
    集合和数组的优势对比:长度可变添加数据的时候不需要考虑索引,默认将数据添加到末尾1.1ArrayList类概述什么是集合提供一种存储空间可变的存储模型,存储的数据......
  • Java——NIO三大核心部分
    在JavaNIO中,选择器(Selector)、通道(Channel)和缓冲区(Buffer)是三个核心组件。选择器:它允许一个单独的线程来监视多个输入通道。你可以注册多个通道使用一个选择器,然后使用......
  • JavaSE——StringBuilder方法
    StringBuilder可以看成是一个容器,创建之后里面的内容是可变的。packagecom.zhao.stringdemo;publicclassStringDemo2{publicstaticvoidmain(String[]args......
  • 多态
    1、什么是多态:同一个对象,在不同时刻表现出来的不同形态。举例:狗可以说狗是狗:    狗Dog=new狗();也可以说狗是动物:动物Animal=new狗();这里狗在不同时......
  • JavaSE——金额转换
    packagecom.zhao.stringtest;importjava.util.Scanner;publicclassTest3{//金额转换//查表法publicstaticvoidmain(String[]args){......
  • JavaSE API
    JavaSEAPI排序java.lang.Comparablejava.lang.Comparatorjava.lang.Object它是所有类型的根父类一个类如果没有显式声明它的父类,这个类的直接父类就是Object理解......