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}

浙公网安备 33010602011771号