一.定义
概述:
抽象类是在类的基础之上进行抽象,但是抽象类不能实例化对象,因为类是不存在的。
抽象类的语法定义为:
[修饰符列表] abstract class 类名{
【类体】
}
抽象类属于的数据类型:
引用数据类型
二.代码示例
1.抽象类不能实例化对象
public class Test3 {
public static void main(String args[]) {
Account p1 = new Account();
}
}
abstract class Account{
}
错误:
Cannot instantiate the type Account
2.子类可以继承抽象类,从而实例化对象
public class Test3 {
public static void main(String args[]) {
Account p1 = new CreditAccount();
}
}
abstract class Account{
}
class CreditAccount extends Account{
}
3.抽象类的子类也可以是抽象类
public class Test3 {
public static void main(String args[]) {
}
}
abstract class Account{
}
abstract class CreditAccount extends Account{
}
4.关键字final不能与abstract同时出现 final修饰的类无法继承,但是抽象类必须被继承。
错误示例:
public class Test4 {
}
final abstract class Account1{
}
The class Account1 can be either abstract or final, not both
5.抽象类虽然无法实例化对象,但是抽象类有无参构造方法。
public class Test3 {
public static void main(String args[]) {
CreditAccount s1 = new CreditAccount();
}
}
abstract class Account{
public Account() {
System.out.println("Account的构造方法");
}
}
class CreditAccount extends Account{
public CreditAccount(){
super();
}
}
三.抽象方法
- 如果你想设计这样一个类,该类包含一个特别的成员方法,该方法的具体实现由它的子类确定,那么你可以在父类中声明该方法为抽象方法。
- Abstract 关键字同样可以用来声明抽象方法,抽象方法只包含一个方法名,而没有方法体。
- 抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。
public class Test4 {
public static void main(String args[]) {
}
}
abstract class Employee{
abstract public void computerPay();
}
(1)抽象方法必须要写在抽象类中
(2)抽象类中不一定有抽象方法
(3)非抽象类继承抽象类必须将该方法实现
public class Test4 {
public static void main(String args[]) {
Salary p1 = new Salary();
p1.computerPay();
}
}
abstract class Employee{
abstract public void computerPay();
}
class Salary extends Employee{
public void computerPay() {
System.out.println("Salary");
}
}