Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 56.9MB ·虚拟内存 1300.0MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类称为抽象类。抽象类无法进行范例化,不能直接使用 new 关键字调用其构造器生成该类的对象。
在 Java 语言中由 abstract 修饰的类叫抽象类,由 abstract 修饰的方法叫抽象方法。
abstract class 类名 { abstract int 方法名(); }
抽象方法没有方法体,也就是方法后面是没有大括号及其包含的代码。在抽象类中既可以有抽象方法,也可以有普通方法。
凡是继承这个抽象类的实体子类,都必须要实现所有的抽象方法。
/** * 员工类 */ public abstract class Employee { protected String name; protected boolean gender; public Employee(String name, boolean gender){ this.name=name; this.gender=gender; } /** * 领工资操作 */ public abstract void getSalary(); public void getName(){ System.out.println("我是" + name); } }
新建一个经理类 Manager,继承抽象类 Employee。我们必须要重写抽象方法 getSalary。
/** * 经理类 */ public class Manager extends Employee{ public Manager(String name,boolean gender){ super(name,gender); } //重写父类的抽象方法 public void getSalary(){ System.out.println("经理领9000元工资"); } }
新建一个会计类 Accountant,继承抽象类 Employee。我们必须要重写抽象方法 getSalary。
/** * 会计类 */ public class Accountant extends Employee{ public Accountant(String name,boolean gender){ super(name,gender); } //重写父类的抽象方法 public void getSalary(){ System.out.println("会计领7000元工资"); } }
public class AbstractTest { public static void main(String[] args) { Manager manager = new Manager("张经理", true); manager.getName(); manager.getSalary(); Accountant accountant = new Accountant("李会计", false); accountant.getName(); accountant.getSalary(); } }
运行执行结果:
$ javac AbstractTest.java $ java AbstractTest 我是张经理 经理领9000元工资 我是李会计 会计领7000元工资
多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。多态性是对象多种表现形式的体现。多态的优点:消除类型之间的耦合关系、可替换性、可扩充性、接口性、灵活性、简化性。多态存在的三个必要条件:继承、重写、父类引用指向子类对象。