Java抽象类及抽象方法

抽象类:

将关键字abstract置于关键字class的前面可以将类声明为抽象类。抽象类不能实例化。抽象类一般用于提供多个派生类可共享的基类的公共定义。例如:类库可以定义一个包含基本功能的抽象类,并要求程序员在使用该类库时,通过创建派生类来提供自己的类实现。

抽象类与非抽象类相比,具有下列特征:

(1)抽象类不能直接实例化,对抽象类使用new运算符会导致编译错误。可以定义抽象类型的变量,但其值必须为null,或者是其派生的非抽象类的实例的引用。

(2)允许(但不要求)抽象类包含抽象成员。

(3)抽象类不能被密封。

(4)当从抽象类派生非抽象时,这些非抽象类必须实现所继承的所有抽象成员,从而重写那些成员。

 

抽象方法:

在抽象类中通过将关键字abstract添加到实例方法的返回类型的前面定义抽象方法(abstract method)。抽象方法声明引入一个新的虚方法,但不提供该方法的任何实际实现,所以抽象方法的方法体只由一个分号组成,而不是常规的方法块。

从抽象类中派生类时,如果派生类为非抽象类,则派生类必须重写抽象方法,以提供它们自己的实现。也就是说,如果一个派生类从基类继承了抽象方法,则要么重写以实现所有的抽象方法,要么使用关键字abstract声明派生类为抽象类

抽象类与抽象方法示例:

package abstractclass;
abstract class Animal{
	public String name;
	public abstract void sayHello();
	public Animal(String name){
		this.name = name;
	}
	public void setName(String name){
		this.name = name;
	}
	public String getName(){
		return this.name;
	}
}

class Dog extends Animal{
	public void sayHello(){
		System.out.println(this.name + ":wow");   //此处用super.name														  //也行
	}
	public Dog(String name){
		super(name);
	}
}

public class AbstractDemo {
	public static void main(String[] args){
		Animal animal = new Dog("jack");
		animal.sayHello();
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值