Java抽象类

Java抽象类教程

Java 继承 教程里我们明白了继承可以从原有的类中派生出新的类。原有的类称为基类或者父类,派生类称为子类,子类可以拥有父类里面的属性或者方法。

Java 语言 里面可以创建一个专门的类来作为父类。这个类就称为抽象类。抽象类里面可以定义具体方法,也可以定义抽象方法,定义类抽象方法,那么子类就必须要实现父类的抽象方法。抽象类不能够被创建对象。

Java抽象类

语法

abstract class 类名{ 属性; 访问权限 返回类型 方法名 (参数){ //定义一个普通方法 //do something } 访问权限 abstract 返回值类型 方法名称(参数); //定义一个抽象方法,没有方法体 }

参数

参数 描述
abstract 抽象类和抽象方法的关键词,加在类前面就是抽象类,加在方法前面就是抽象方法

说明

abstract 是抽象类和抽象方法的关键词,abstract 加在类前面表示该类是抽象类,abstract 如果放在方法前面就是抽象方法,抽象方法没有方法体,在参数后面的 ) 就结束了,加了分号。

一个类里面如果有抽象方法,那么这个类就必须是抽象类。如果一个类是抽象类,那么这个里面不一定有抽象方法。

抽象类是不能被实例化的,如果想创建该类的对象,必须是该类的子类。

案例

我们定义一个抽象的父类 AbstractClas.Java

package com.haicoder.net.abs; public abstract class AbstractClas { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public abstract void getInfo(); //定一个抽象类 }

定义一个子类ChildClass.Java来继承

package com.haicoder.net.abs; public class ChildClass extends AbstractClas { @Override public void getInfo() { System.out.println("姓名:" + this.getName() + " 年龄:" + this.getAge()); } }

定义一个测试类 AbsTest.Java 来测试

package com.haicoder.net.abs; public class AbsTest { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)\n"); ChildClass childClass = new ChildClass(); childClass.setName("嗨客网"); childClass.setAge(21); childClass.getInfo(); } }

运行结果如下:

09 java抽象类.png

我们定义了一个子类来继承了抽象的父类,然后父类里面的属性方法就可以被子类来使用了。子类这边 覆盖了父类 里面的 getInfo() 方法。

Java抽象类总结

我们在案例中可以发现,抽象类其实和普通类差不多,其实就是比普通类多了一个 abstract 关键字,抽象类不能够被实例化。抽象类里面的抽象方法是没有方法体的,只是定义了一个方法名和参数还有返回值,抽象类可以作为一个模板。让子类来继承,实现里面的抽象方法。

抽象方法里面的抽象方法需要被子类实现,所以抽象类里面的抽象方法不能够是 private 类型的。