java 抽象类(abstract)小结

tech2026-03-02  3

java抽象类

在面向对象概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

有句话说的很形象,我们说动物(Animal)可以吃东西,但不同的动物吃的东西却不相同,猫吃鱼,羊吃草,够吃骨头等等,那么我们可以把动物表达为抽象类。

抽象类除了不能实例化对象之外,类的其他功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能使用。

//抽象类 abstract class Animal{ abstract void eat(); } //Cat类 class Cat extends Animal{ public void eat(){ System.out.println("吃鱼"); } } //Dog类 class Dog extends Animal{ public void eat(){ System.out.println("吃骨头"); } } //Sheep类 class Sheep extends Animal{ public void eat(){ System.out.println("吃草"); } } public class Test{ public static void main(String[] args){ show(new Cat()); show(new Dog()); } public static void show(Animal a){ a.eat(); } }

抽象方法

Abstract关键字同样可以用来声明抽象方法,抽象方法只包含一个方法名,而没有方法体。抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。例如:

public abstract class Employee{ peivate String name; private String address; private int number; public abstract double computePay(); .... }

声明抽象方法会造成一下两个结果:

1:如果一个类包含抽象方法,那么该类必须是抽象类;

2:任何子类必须重写父类的抽象方法,或者声明自身为抽象类;

抽象类总结:

1:抽象类不能被实例化,否则编译无法通过。只有抽象类的非抽象子类可以创建对象。

2:抽象类中不一定包含抽象方法,但是由抽象方法的类必定是抽象类。

3:抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现。

4:构造方法,类方法(用static修饰的方法)不能声明为抽象方法。

5:抽象的子了必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

 

 

 

 

 

 

 

 

 

 

 

 

最新回复(0)