更新时间:2021年03月18日 08时58分14秒 来源:黑马程序员
在面向对象的概念中,所有的对象全是通过类来描绘的,但是相反,并不是所有的类全是用来描绘对象的,假如一个类中没有包括足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不可以实例化对象之外,类的其它功能仍然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
·由于抽象类不可以实例化对象,因此抽象类必须被继承,才能被应用。也由于这一缘故,一般在设计阶段决定需不需要设计抽象类。
·父类包括了子类集合的常见的方法,但是由于父类本身是抽象的,因此不可以应用这些方法。
·在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
·抽象类和抽象方法都应用 abstract 关键字进行声明。假如一个类中包括抽象方法,那么这一类必须声明为抽象类。
·抽象类和普通类较大的区别是,抽象类不可以被实例化,需要继承抽象类才能实例化其子类。
public abstract class AbstractClassExample { protected int x; private int y; public abstract void func1(); public void func2() { System.out.println("func2"); } }
public class AbstractExtendClassExample extends AbstractClassExample { @Override public void func1() { System.out.println("func1"); } }
// AbstractClassExample ac1 = new AbstractClassExample(); // 'AbstractClassExample' is abstract; cannot be instantiated AbstractClassExample ac2 = new AbstractExtendClassExample(); ac2.func1();
抽象类总结
抽象类不能被实例化,如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。
推荐了解热门学科
java培训 | Python人工智能 | Web前端培训 | PHP培训 |
区块链培训 | 影视制作培训 | C++培训 | 产品经理培训 |
UI设计培训 | 新媒体培训 | 产品经理培训 | Linux运维 |
大数据培训 | 智能机器人软件开发 |