抽象类和接口

一、抽象类

抽象类的作用类似模板,其目的是要设计者根据他的格式来修改并创建新的类。但是并不能够有抽象类直接创建对象,只能够通过抽象类派生出新的类,再由它来创建对象。但是在抽象类的使用中同样存在单继承的局限,即一个子类只能够继承一个抽象类。

抽象类的定义及使用规则如下:

1)包含一个抽象方法的类必须是抽象类

2)抽象类和抽象方法都要使用abstract关键字声明

3)抽象方法只需要声明而不需要实现

4)抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法

示例代码:

abstract class A {
	public abstract void print();
	public void getInfo(){
		System.out.println("info...");
	}
}

class B extends A {
	public void print(){
		System.out.println("subclass B...");
	}
}

public class AbstractDemo {

	public static void main(String[] args) {
		B b = new B();
		b.print();
		b.getInfo();
	}
}
注意问题:

1)一个抽象类不可以用final关键字类声明,因为抽象类是必须被子类覆写的,如果使用final关键字声明,那么此类就不可以被子类继承

2)抽象类可以定义构造方法,抽象类依然使用的是类的继承关系,而且抽象类中也存在各个属性,所以子类在实例化之前必须先对父类进行实例化

3)抽象方法不要使用private关键字声明,否则子类无法覆写该抽象方法

二、接    口

接口是Java中最重要的概念之一,它可以被理解为一种特殊的类,是由全局常量公共的抽象方法组成,在接口中抽象方法必须定义为public访问权限。在接口中如果不写public,则也是public访问权限。

interface A {
	String AUTHOR = "张三"; //等价于:public static final String AUTHOR = "张三";
	void print(); //等价于:public abstract void print();
	String getInfo(); //等价于:public abstract String getInfo();
}
和抽象类一样,接口若要使用也必须通过子类,子类通过implements关键字实现接口,一个子类可以实现多个接口,从而摆脱了Java单继承的局限性Java中接口是不允许继承抽象类的,但是一个接口可以继承多个接口

三、总    结

序号

区别点

抽象类

接口

1

定义

包含一个抽象方法的类

全局常量和公共抽象方法的集合

2

组成

构造方法、抽象方法、普通方法、常量、变量

常量、抽象方法

3

使用

子类继承抽象类(extends)

子类实现接口(implements)

4

关系

抽象类可以实现多个接口

接口不允许继承抽象类,但是可以继承多个接口

5

常见设计模式

模板设计

工厂设计、代理设计

6

对象

都通过对象的多态性产生实例化对象

7

局限

抽象类有单继承的局限

接口没有此局限

8

实际

作为一个模板

作为一个标准或表示一种能力

9

选择

如果抽象类和几口都可以使用,则优先使用接口,避免单继承的局限

10

特殊

一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值