版权声明: https://blog.csdn.net/qq_40794602/article/details/86765809
接口概述:
- 从狭义的角度讲就是指java中的interface
- 从广义的角度讲对外提供规则的都是接口
- 接口就是提供对外访问的规则
接口的特点:
- 接口用关键字interface表示,interface 接口名{}
- 类实现接口用implements表示,class 类名 implements 接口名{}
- 接口不能实例化,按照多态的方式来实例化
- 接口的子类,可以是抽象类,但意义不大,可以是具体类,要重写接口中的所有方法
接口的代码EG:
public class J1{
public static void main(String[] args){
B b = new B();
b.eat();
}
}
interface A{
//1.在接口里声明的方法都是抽象方法
//2.在声明方法时,不加abstract,系统默认是抽象方法
//3.你在方法里写不与abstract的效果是一样的
public void eat();
}
class B implements A{
public void eat(){
System.out.println("吃东西...");
}
}
类与类,类与接口,接口与接口的关系:
- 类与类:继承关系,只能是单继承,可以多层继承
- 类与接口:实现关系,可以单实现,也可以多实现;并且还可以在继承一个类的同时实现多个接口
- 接口与接口:继承关系,可以单继承,也可以多继承
抽象类于接口的区别:
成员区别:
- 抽象类:成员变量可以是变量,也可以常量,有构造方法,成员方法可以是抽象,也可以非抽象
- 接口:成员变量只可以常量,成员方法只可以抽象,没有构造函数
关系区别:
- 类与类: 继承关系,单继承
- 类与接口: 实现关系,单实现和多实现都可以
- 接口与接口: 继承关系,单继承和多继承
设计理念区别:
- 抽象类 抽象类中定义的是该继承体系的共性功能
- 接口 接口中定义的是该继承体系的扩展功能
接口和继承EG:
public class J1 {
public static void main(String[] args) {
小姐姐 Pn = new 小姐姐();
Pn.drive();
Pn.豪车();
Pn.豪宅();
}
}
class 亲爹{
public void drive(){
System.out.println("开着三轮车...");
}
}
interface 干爹1{
public void 豪车();
}
interface 干爹2{
public void 豪宅();
}
class 小姐姐 extends 亲爹 implements 干爹1,干爹2{
@Override
public void 豪车() {
System.out.println("恭喜,干爹1给你豪车...");
}
@Override
public void 豪宅() {
System.out.println("恭喜,干爹2给你豪宅...");
}
}
//继承就像是亲爹,只能有一个,接口就像是干爹可以有多个
独立的Java文件:
- 前面学习的类基本都是写在一个有main方法的文件里
- 实际的开发中,一个项目是由n个Java文件构成的
- 一般情况下会把一个类写在一个独立的Java文件
package包的作用:
- 包其实就是文件夹
- 包的作用是将字节码(.class)进行分类存放
- 包的作用可以使在同一个项目中有相同的类
- 包的作用有利于以后功能模块的划分
定义包的格式:
- 包名一般用公司域名的倒写,如.www.baidu.com的域名
- 包名写成com.baidu.功能模块名(com.baidu.student)
定义包的注意事项:
- 通过eclipse创建包,然后在包下面创建的java文件,默认会在第一行加入 package代码
- 如果在一个包的类中使用另一个包的类,需要使用import导入包的类,如:import com.baidu.model.Student
- package语句必须是放在第一行的代码位置
- package语句在一个java文件中只能有一个
- 项目中的src和bin目录区别:src是源代码,bin是存放编译后的class文件
import关键字概述:
- import关键字是用来导入类的
- import使用的两种方式:1. import com.baidu.model.Student 只导入一个类;2. import com.baidu.model.* 导入包的所有类,不建议使用这种方法
- 创建类的另一种方式,在类名前加包名:com.baidu.model.Student stu = new com.baidu.model.Student();java.util.Scanner s = new java.util.Scanner(System.in)
- 包的类能被其它包访问,一定是public的类,pulbic修饰的类代表其它包可以访问此类
面试题:package,import,class有没有顺序关系?
- package只能有一个,必须放在java文件的第一行
- import只能放在package的下面,多个import应放在一起
- class 放在 package 或者import的下面
四种权限修饰符图表:
- 所谓的权限就是别人是否能访问类、属性、方法
- 主要先掌握private和public就可以了
- 一般写方法时,最好写上private或者public
- 写类的时候,会在类名前加public
常见修饰符:
- 权限修饰符:private,默认的,protected,public
- 状态修饰符:static,final
- 抽象修饰符:abstract