抽象类、接口

来源:互联网 发布:英文seo招聘 编辑:程序博客网 时间:2024/05/18 01:51

抽象类和接口是Java面向对象中最重要最有特色的,Java编程中很多的设计模式,优秀的代码都需要依托此两个概念。

一:抽象类

1,概念

抽象类:包含(至少)一个抽象方法的类就称为抽象类,这个类需要使用abstract修饰。

抽象方法:只声明而未实现的方法就称为抽象方法,抽象方法必须用abstract关键字声明。

2,抽象类的定义以及使用规则:

1,包含一个抽象方法的类必须是抽象类;
2,抽象方法和抽象类都要使用abstract关键字声明;
3,抽象方法只需要声明而不需要实现;
4,抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法;
这里写图片描述

3,抽象类和普通类的比较:

1,其实抽象类和普通类相比,就是多了个抽象方法而已,因为这一点的不同所以导致了抽象类要使用abstract修饰,似乎就是这点的差异。

2,抽象类不能直接实例化,因为其内部有未实现的方法,这些方法是不能直接使用的。

3,所以说抽象类必须得有子类,子类必须覆写抽象类中的全部抽象方法(如果这个子类不继续是抽象类的话),必须通过子类才能使用这抽象方法。

4,抽象类中可以定义构造方法么?

何来此问题呢?因为抽象类不能直接实例化,构造方法的作用就是实例化对象的时候,给对象初始化属性值啊,这么一想似乎确实存在矛盾,但是真的是这样么?其实不然—
抽象类中是允许存在构造方法的,因为抽象类依然使用的是类的继承关系,所以,子类进行实例化的时候,肯定是需要先对父类进行实例化的(因为这是,子类对象实例化的过程就是先调用父类的构造,再调用子类的构造),而且抽象类中也存在各个属性。

二:接口

1,接口的概念:

接口可以理解为一种特殊的类,里面全部是由全局常量(public static final)公共的抽象方法(public abstract)所组成。

1,接口的定义格式及使用

接口的定义:
接口的定义
接口的使用:
接口的使用
接口的使用必须有子类,子类必须覆写全部抽象方法,implements关键字实现接口,一个子类可以同时实现多个接口,如果子类不是抽象类的话,则,肯定要覆写接口中的全部抽象方法。

同时 继承抽象类和接口:
这里写图片描述

因为接口的组成部分就是全局常量和公共的抽象方法,所以,在定义接口的时候可以省略static final,public abstract这关键字来简化接口的定义。

interface A{    public static final String AUTHOR="JAKE";    public abstract String getInfo();}

可以简化为:

interface A{    String AUTHOR="JAKE";    String getInfo();}

这两种定义是完全相同的,没有任何区别。

2,接口与抽象类的关系

0,一个子类可以同事实现(继承)多个接口,实现多重继承的概念,但是一个子类只能继承一个抽象类,不能实现多重继承,但是可以实现多层实现;
1,接口不可以继承抽象类;
2,抽象类可以实现接口而且可以同时实现多个接口;
3,接口可以继承接口,而且可以同时继承多个接口;
4,一个子类,必然也可以同时继承抽象类,也同时实现接口,但是要覆写所有的抽象方法(如果这个子类不是抽象类的话)。

参考:
接口的抽象方法是否可以使用protect修饰呢?
参考1
jdk8中,抽象类和接口有什么新的内容呢?
参考2

1 0
原创粉丝点击