首页 > 编程知识 正文

抽象类是不能够被实例化的,想要定义一个不能被实例化的抽象类

时间:2023-05-05 17:14:21 阅读:191370 作者:1715

      接口是我们常用的,抽象类好像并不是怎么常用,但这并不代表他不重要,他可以被继承,可以有构造方法,可以给类中的成员变量赋初值,接口就没有这样的功能。
      抽象类的出现使得位于上层的类更具有通用性。从某种角度来看,祖先类更加具有通用性。
      普通类加abstract即为抽象类。抽象类不能够被实例化,也就是说我定义了一个抽象类public abstract class Person{...}类,这个person类不能被new;大家也都知道,在new的时候是调用了构造方法,既然抽象了不能够被new为什么还要有构造方法?世界之大,无奇不有,这个方法行不通我们就想另一种方法,我们可以通过new,可以通过set、get方法给成员属性赋值,我们还可以在子类中调用super()方法给父类赋初值,然后继承父类当中的属性,既然不能通过new来调用抽象类的构造方法,我们可以看到还可以通过子类的super()方法来调用抽象类的构造方法,并对其赋值,例如我编写了一个Student类,继承于抽象类Person,public class Student extents Person{...},Student类可以被实例化,要想对Person类中的某些成员方法赋初值,可以在Student类中调用super()方法,对抽象类的成员属性进项赋值,继承了抽象类的子类就可以对抽象类的一些属性进行赋值,并且可以继承抽象类已经赋值过的方法和属性。
      需要注意的是,还可以定义一个抽象类的对象变量,但是他只能引用非抽象类子类的对象。例如,Person p = new Stduent(“cqdxy”,28);这里的p是一个抽象类Person的变量,Person引用了一个非抽象子类Student的实例。
      抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类,在抽象类中的抽象方法可以只定义,空实现,但是实现了抽象类的子类必须要重写实现抽象类中的抽象方法。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。