抽象类与接口

什么是抽象方法?

java允许在定义方法时不写方法体,而这种不写方法体的方法为抽象方法,抽象方法必须用abstract关键字修饰。

什么是抽象类?

当一个类中包含了抽象法方法,该列必须用abstract关键字修饰。使用abstract修饰的类为抽象类。

在定义抽象类时需要注意:包含抽象方法的类必须声明为抽象类,但抽象类可以不包含任何的的抽象方法,只需要使用abstract关键字修饰即可。

另外,抽象类不可用被实例化的,因为抽象类中可能包含抽象方法,抽象方法时没有方法体的,不可以被调用。如果需要调用抽象类中定义的方法,则需要创建一个子类,在子类中将抽象类中的抽象方法进行实现。

定义抽象类Animal

public abstract void Animal{
	abstract void shout();
}

定义Dog类继承Animal类

public Dog Extends Animal{
	public void shout(){
		SYstem.out.println("汪汪");
	}
}

定义测试类

public class Example{
	public static void main(String args[]){
		Dog dog = new Dog();
		dog.shout();
	}
}//Output:汪汪

子类Dog实现了父类的shout()方法,可以正常进行实例化,并通过实例化对象调用方法。

什么是接口?

如果一个抽象类中的所有方法都是抽象的,则可以将这个类用另一种方式来定义,即接口。

[public] interface 接口名 [extends 接口1,接口2]

一个接口可以有多个父接口,克服了单继承的限制。
接口中的变量默认用"public static final"来修饰,即全局变量。
接口中的方法默认使用"public abstract"来修饰
接口需要实现类来实现实现接口中的方法(implement)。

[修饰符] class <类名> [extends <父类名>] [implements <接口1,接口2>]

public interface Animal{
	String ANIMAL_BEHAVIOR = "动物的行为";
	public abstract void breath();
	public abstract void run(); 
}
public interface LandAnimal extends Animal{
	public abstract void LiveOnLand();
}
public Dog implements LabdAnimal{
	public void breath(){
		System.out.println(ANIMAL_BEHAVIOR+"狗在呼吸");
	}
	public void run(){
		System.out.println(ANIMAL_BEHAVIOR+"狗在跑");
	}
	public void LiveOnLand(){
		System.out.println(ANIMAL_BEHAVIOR+"狗生活在陆地");
	}
}
public class  Test{
	public static void main(String args[]){
		Dog dog = new Dog();
		dog.breath();
		dog.run();
		dog.LiveOnland();
	}
}

接口可以多个父接口,但实现接口时必须给出接口中所有方法的实现,包括其父接口的方法。在上述例子中,Dog为LiveOnLand接口的实现类,而LiveOnLand为Animal接口的子接口,所以Dog实现了两个接口的三个方法。

需要注意的是,一类实现一个接口必须给出所有方法的实现,如果不能实现某方法,也必须写出一个空方法(抽象类除外)
接口中的属性只能是常量

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值