带你了解什么是抽象类,抽象类不能够被实例化为什么还有构造方法?

      接口是我们常用的,抽象类好像并不是怎么常用,但这并不代表他不重要,他可以被继承,可以有构造方法,可以给类中的成员变量赋初值,接口就没有这样的功能。
      抽象类的出现使得位于上层的类更具有通用性。从某种角度来看,祖先类更加具有通用性。
      普通类加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(“张三”,28);这里的p是一个抽象类Person的变量,Person引用了一个非抽象子类Student的实例。
      抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类,在抽象类中的抽象方法可以只定义,空实现,但是实现了抽象类的子类必须要重写实现抽象类中的抽象方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值