java abstract 关键字

abstract:抽象的
它也属于修饰符的一种,它可以修饰:类(包括外部类以及内部类)、方法。

1.为什么要是用抽象类和抽象方法?

当我们在设计父类时,发现某些方法无法给出具体的实现,具体的实现应该在子类中实现。那么这样的方法,在父类中就可以设计为抽象方法。而包含抽象方法的类必须是抽象类。
比如:设计一个图形类,这个图形类有很多子类,包括圆形、三角形、矩形等。而这些图形都具有周长、面积等共同的特征。那么这些特征就应该设计到父类中,但是这些图形求取周长,面积的方法不同,所以在父类中不能具体实现,必须在子类中实现。

2.设计一个抽象方法的格式:

[权限修饰符] abstract class 抽象类名[extends 父类名]{
[权限修饰符] abstract 返回值类型 方法名([形参列表]);
}

3.抽象类的特点:

(1)拥有一个或者多个抽象方法的类“必须”是抽象类;但是抽象类中可以没有抽象方法(此时目的只有一个: 不让你创建对象)。

(2)抽象类不能直接创建对象(不能直接new对象),即不能实例化。假设有一个抽象类A,A a = new A();这种语句是错误的,即不能本态引用。

(3)抽象类的变量可以与子类的对象构成多态引用,执行子类重写的方法。假设有一个抽象类A,子类B继承A父类,A a = new B();这种语句是正确的,然后再执行B类当中重写的方法,即a.(B类当中重写的方法)。

(4)抽象类就是用来被继承的,子类继承抽象类时,必须对父类的抽象方法进行实现,否则子类也得是抽象类

(5)抽象类也是类,因此原来类中可以有的成员,抽象类都可以有,包括:属性、构造器、代码块、非抽象的方法等成员,这些都可以被子类调用。那么抽象类不能直接创建对象,为什么还有构造器呢? 供子类调用,子类创建对象时,需要为从父类继承的属性初始化

抽象类与普通类的区别:

◆(1)抽象类是使用abstract修饰,

普通类没有abstract 修饰

●(2)抽象类不能实例化

普通类可以实例化

●(3)抽象类中可能有一个或多个抽象方法

普通类不能有抽象方法

与abstract冲突的关键字:
1.权限修饰符:
private 不能与abstract同时修饰方法,因为private修饰的方法在子类中不可见,不能重写。但是private可以和abstract同时修饰成员内部类
2.static:
static也不能与abstract同时修饰方法,因为static修饰的方法不可重写,并且,static的方法直接用“类名.”调用,没有方法执行。但是static也可以和abstract同时修饰成员内部类
3.final:
final不能与abstract同时修饰方法,因为final修饰的方法不能重写,abstract修饰的方法必须重写。它们也不可以同时修饰类,因为final表示不能被继承,而abstract就是用来继承的。
4.native:
native也不能与abstract同时修饰方法,因为native表示方法体由c语言实现,而abstract表示没有方法体,方法体由子类实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值