接口:
1、语句定义格式:接口使用关键字:interface表示
interface 接口名{}
2、接口是如何实现的呢?
接口不能实例化
那么接口如何表示
这里需要另外一个关键字供其他类实现接口:implements
使用多态的形式进行实现,由具体的子类进行实例化,其实这是多态的一种,叫做接口多态
3、也可以用一个抽象类去实现
三种多态的形式:
1、具体的类中的多态
2、抽象类中的多态
3、接口中的多态(在大数据开发中最常见的接口多态)
接口中成员的特点:
成员变量:
只能是常量,并且是静态的
JVM在真正运行之前会自动补齐修饰符:public static final
建议:在学习阶段补齐,在开发阶段可以不写
构造方法:
接口中没有构造方法
成员方法:
接口中的方法只能是抽象方法,没有方法体,连一个大括号都没有
JVM在真正运行之前会自动补齐修饰符:public abstract
建议补齐修饰符
注意:
1、当一个具体的类实现接口的时候,必须实现接口中所有的抽象方法
2、当一个抽象类实现接口的时候,可以选择不实现接口中的方法,也可以实现接口中的方法
类与类,类与接口,接口与接口的关系
类与类:
存在继承关系,只能进行单继承,不可以进行多继承,可以多层继承
类与接口:
实现关系,可以单实现,也可以是一次性实现多个接口,也可以在继承一个类的同时,实现多个接口
接口与接口:
存在的是继承关系,可以进行单继承,也可以进行多继承
我们面对的是面向接口开发
将代码进行分类开发,会提高我们开发的效率和排错效率
通常情况分四层:
bean:一般存放的是将来要new的实体类
controller:一般是数据的入口类
dao:具体对数据做操作的地方,放在dao层,这层一般情况下,都是对数据库做操作
service:一般在这里面放的是接口和实现类
形式参数:
基本数据类型:byte,short,int,long,float,double,char,boolean
引用数据类型:
类:当类作为方法的形式参数的时候,实际上需要的是该类的对象的地址值
抽象类:当抽象类作为方法的形式参数传参的时候,实际上需要的是该类子类实现对象的地址值,利用多态创建
接口:当接口作为形式参数传参的时候,实际上需要的是该接口的实现类对象的地址值,利用多态创建
数组:
方法返回值的问题:
基本数据类型:byte,short,int,long,float,double,char,boolean
引用数据类型:
类:当类作为方法的返回值的时候,实际上返回的是该类对象,接收返回值的类型要和返回值一致
抽象类:当抽象类作为返回值的时候,实际上返回的是该抽象类的子类的对象
接口:当接口作为返回值类型的时候,需要的是实现该接口的类的对象
包,在这里就是文件夹的意思
面试题:package,import,class他们三个之间的顺序
package:到达的路径,所在文件夹的路径,它最终以包结束(在最前面)
import:导入外界你想要使用的类,它最终以你想要导入的哪个类/java结束
要想导入某一包下所有的类, (.*)不推荐
只要当你需要导入大于30个类的时候,可以考虑.*
class:表示定义一个类,java的最基本的单位(import后面)
权限修饰符: 同一类下 同一包子类中,其他类 不同包的子类 不同包的其他类
public √ √ √ √
protected √ √ √
默认的 √ √
private √
类及其组成可以用的修饰符
修饰符:
访问权限修饰符:public,protected,默认的,private
状态修饰符:static,final
抽象修饰符:abstract
类:
访问修饰符:public,默认的
状态修饰符:final
抽象修饰符:abstract
成员变量:
访问修饰符:public,protected,默认的,private
状态修饰符:final(可以修饰,但是要在构造完毕之前初始化),static
抽象修饰符:
构造方法:
访问修饰符:public,默认的,private,protected
状态修饰符:
抽象修饰符:
成员方法:
访问修饰符:public,默认的,protected,private
状态修饰符:final(不可以重写,但是可以继承),static
抽象修饰符:abstract(可以,但是要是抽象类)
常见的修饰符组合:
成员变量:public static final 在接口中
成员方法:
1、public abstract
2、public static
3、public final
将来开发中除了封装必须用private,实在不知道用谁就用public