抽象类和接口的部分小节
来源:互联网 发布:网络英语培训排名 编辑:程序博客网 时间:2024/05/22 09:36
抽象类
1.abstract 关键字可以用来修饰类(抽象类)也可以用来修饰方法(抽象方法)。
2.不可以被实例化,但是有构造函数,构造函数也可以重载。接口没有构造。原因是如果抽象类没有构造,那么子类怎么办?岂不是不能初始化父类资源了?!
3.有抽象方法的类,一定是抽象类,抽象方法和抽象类都必须用abstract修饰。
4.抽象类中可以有抽象方法,也可以有具体的实现方法,若果是“具体”子类继承了该类那么子类中必须重写全部抽象父类的全部抽象方法;如果不是具体子类,
而是一个“抽象”类继承了该抽象类,则不一定就要重写所有的抽象方法了。(想实例化的类必须实现所有抽象方法);子类当然也可重写抽象类中已经实现
的方法。
5.抽象方法不可以被private修饰,因为如果这样子类就无法继承,也就失去了意义。
6.abstract 不能修饰、属性,private方法,final方法,构造函数、静态方法。问题,如果抽象类本身或者里面的方法前面不写public默认是什么?
7.抽象类的应用场景:主要用于父类无法确定全部实现,而由子类提供具体实现的类。
8.抽象类的模板设计模式:把抽象类当成多个子类的通用模板,子类在模板基础上进行改造,但是子类总体上保留了父类的行为方式。
解决的问题是:抽象类中的一些功能确定,一些功能不能确定时候,把不能确定的暴露出去让子类具体情况实现。
扮演模板角色,供给子类发挥实现。
在谈论接口的时候先思考一个问题,为什么Java不支持多继承,只能多层继承呢?接口却可以?(如果可以多继承super构造哪个父类呢?)
接口
1.接口的意义:当必须要从几个类中派生出一个子类,继承他们所有的方法和属性时候这里就要用到接口。(接口虽然没有构造方法,但是子类实现多个接口的时候
默认 extends 了Object)
2.接口从另一个角度讲可以看成抽象类过度过来的,它是一个特殊的抽象类,里面只有常量属性和抽象方法。
3.接口可以继承其他接口的,而且可以多继承。(接口里面没有构造方法,不会歧义)
4.接口里面的成员属性都是默认public static final的,方法默认都是public abstract 的,接口本身interface之前默认也是public的。但是在同一个文件中,一般
不允许有两public申明,除非在内部申明。由此知道,抽象类和接口前面修饰符是public 或者 默认(没有)。
5.接口里面的方法如果是被“具体”类实现,必须实现里面所有的接口。
6.接口和抽象类之间有什么关系呢?抽象类是可以implements接口的,但是不可以继承一个接口,接口除了自身能自我继承外,其他都需要去实现implements。
接口和抽象类,具体类作为形式参数和返回值的问题
1.具体类作为形参和返回值,要求传入一个它的对象,返回它的对象。
2.接口作为形参和返回值,要求传入的是该接口的实现类对象,返回该接口的实现类对象。
3.抽象类作为形参和返回值,要求传入该抽象类子类对象,返回该抽象类的子类对象。
- 抽象类和接口的部分小节
- 【笔试】接口和抽象类的部分区别
- 接口的行为抽象和抽象类的行为抽象
- 抽象类和接口(抽象类部分实现,接口隐式实现)
- JAVA接口与抽象类的区别(部分转载)
- 抽象接口和抽象类
- 抽象类和抽象方法以及和接口的区别
- 类的抽象和接口的区别
- 接口和抽象类
- 接口和抽象类
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- centos6安装elasticsearch6错误笔记
- ThinkPadT420装双系统
- 2147 表达式语法分析——递归子程序法
- CPP 调用Python
- yum提示Another app is currently holding the yum lock; waiting for it to exit...
- 抽象类和接口的部分小节
- Linux基础 30分钟GDB调试快速突破
- 推荐算法与伦理
- Java开发快递物流项目(5)
- 欢迎使用CSDN-markdown编辑器
- 算法提高 最小方差生成树
- 团体程序设计天梯赛 L1-009. N个数求和
- fork()复制进程
- web新能优化五-图片的预加载