抽象类和接口

抽象类和接口

 

抽象类

用关键字abstract修饰的类称为抽象类(abstract类)

抽象方法

使用关键字abstract修饰的方法称为抽象方法(abstract方法),抽象方法只允许声明,不允许实现

抽象类和抽象方法的关系

1. 相比于普通类, abstract 类可以有 abstract 方法,也可以有非 abstract 方法
2. abstract 类也可以没有 abstract 方法,这种情况下,编译器不会报错,但是 abstract 类中没有 abstract 方法是会让 abstract 类形同普通类一样,大材小用

抽象类的继承

1. 非抽象类继承了一个抽象类,则该非抽象类必须重写父类中的抽象方法
2. 抽象类继承了另一个抽象类,则该抽象类可以重写父类中的抽象方法,也可以直接继承父类中的抽象方法

3.对于抽象类,只能声明,不能使用new运算符创建该类的对象

/*
 * 抽象类Water定义了两个抽象方法:process和source,一个非抽象方法getType
 */
public abstract class Water {
	public int type;
	public abstract String process();
	public abstract void source();
	public int getType() {
		return type;
	}
}
/*
 * 抽象类SpringWater重写了Water的source抽象方法,且继承了process抽象方法
 */
public abstract class SpringWater extends Water {
	@Override
	public void source() {
		
	}
}

 

/*
 * 非抽象类YiBao,必须重写父类SpringWater中的process抽象方法
 */
public class YiBao extends SpringWater {
	@Override
	public String process() {
		return null;
	}
}

 

接口的诞生

Java不支持多继承性,即一个类只能有一个父类,单继承性使得Java简单,易于管理和维护。那么为了克服Java单继承的缺点,Java使用了接口,一个类可以实现多个接口

接口的定义

Java使用关键字interface来定义一个接口。跟类的定义相似,接口的定义分为接口的声明和接口体。接口体重只包含常量的声明(没有变量)和抽象方法(没有普通方法)定义两部分,且接口体中所有常量以及所有抽象方法的访问权限一定都是public(允许省略publicfinalabstract修饰符)

接口的使用

类通过关键字implements声明自身实现一个或多个接口,多个接口名之间用逗号隔开。实现接口的类必须重写接口中定义的所有方法

/*
 * interface Car是接口声明,花括号中的内容是接口体
 */
public interface Car {

	public final float weight = 200.0f;
	int height = 180;//等价于public final int height = 180;
	public abstract void color();
	void speed();//等价于public abstract void speed();
}
/*
 * Diver类继承了Person类,并实现了Car和Tool两个接口
 */
public class Diver extends Person implements Car,Tool {

	@Override
	public void color() {

	}

	@Override
	public void speed() {

	}

	@Override
	public void repair() {
		
	}

}

 

接口和抽象类的比较如下:

1. 接口和抽象类都有 abstract 方法
2. 接口中只可以有常量,不能有变量;而抽象类中既可以有常量也可以有变量
3. 接口中只有 abstract 方法;而抽象类中既有 abstract 方法也可以有普通方法(非 abstract 方法)

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值