抽象类、接口
来源:互联网 发布:英文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
- 接口、抽象类、抽象方法
- 抽象接口和抽象类
- 类 抽象类 接口
- 抽象类接口类
- 类、抽象类、接口
- 类、抽象类、接口
- 类、抽象类,接口
- 接口和抽象类
- 接口和抽象类
- 接口和抽象类
- 抽象类,接口
- 抽象类和接口
- 抽象类和接口
- 抽象类与接口
- 抽象类和接口
- 接口与抽象类
- 抽象类与接口
- 抽象类与接口
- ES6
- html页面前进和后退
- 再谈quick lua 继承
- Synchronized同步静态方法和非静态方法总结
- android__View
- 抽象类、接口
- JAVA——包(package)及对jar包的操作
- Struts1和Struts2的区别和对比
- Android中的Apk的加固(加壳)原理解析和实现
- Android-Emulator
- hibernate_Restrictions用法
- 【并发学习】名博好文记录
- ThinkPad E430 蓝牙驱动 BCM43142A0
- sql注入