8.4Java入门--->第十二节

1、多态

一种物种,多种表现形态

体现:方法的重写和重载

   对象的多态

Java运行分编译时和运行时

在多态情况下,编译时看左边(看的是父类引用)

        运行时,看的是右边(看的是子类对象)

 

多态的前提:继承、方法重写

 

(父类引用指向子类对象)--->父类变量的引用指向的是子类对象,因此调用父类变量的方法或者变量,实际运行的是子类对象中的方法和变量(包括继承父类的,重写父类等)

(子类可以替代父类使用)

person ps=new man();

向上类型转换(自动转换)

向下类型转换(强转)

 老师我举报,他睡觉

 

 

 

 

 

抽象类

抽象方法不可以有方法体(包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类)

抽象类不可以实例化

含有抽象方法,只能被定义为抽象类

抽象类就是用来被继承的(不可以使用private和static、final),继承抽象类的类必须重写抽象方法

编写一个Employee类,声明为抽象类,
包含如下三个属性:name id salary ,提供必要的构造器和抽象方法:work.
对于Manager类来说,它即使员工还具有奖金bonus属性,请使用继承思想设计。
package com.xian;

public abstract class Employee {
    String name;
    int id;
    double salary;

    public Employee(String name, int id, double salary) {
        this.name = name;
        this.id = id;
        this.salary = salary;
    }

    public Employee() {
    }

    public abstract void work();
}
package com.xian;

public class Manger extends Employee {
    private double bonus;
    public Manger(String name, int id, double salary, double bonus) {
        super(name, id, salary);
        this.bonus = bonus;
    }
    public Manger() {
    }
    @Override
    public String toString() {
        return "Manger{" +
                "name='" + name + '\'' +
                ", id=" + id +
                ", salary=" + salary +
                ", bonus=" + bonus +
                "} " ;
    }

    public void work() {
        System.out.println("外聘高级管理人员");
    }
}
package com.xian;

public class TestManager {
    public static void main(String[] args) {
        Manger manger=new Manger("管理员",001,6000,1000);
        manger.work();
        System.out.println(manger.toString());
    }
}
运行结果
外聘高级管理人员 Manger{name
='管理员', id=1, salary=6000.0, bonus=1000.0}

 

posted @ 2020-08-04 17:33  Spring_Xian  阅读(140)  评论(0)    收藏  举报