package heihei;
public class 接口 {
//1.定义接口
interface Maker{
int a=10;
void test();
void test02();//3.实现接口的类,必须实现接口中的所有抽象方法
}
//2.实现接口,implements来实现接口
public static class Son implements Maker{
public void test() {
System.out.println("test");
}
public void test02() {
}
}
//如果不实现接口的抽象方法,那么可以把类修饰为抽象类
public static abstract class Son2 implements Maker{
}
//3.接口继承接口
interface SMaker extends Maker{
}
public static class SSon implements SMaker{
public void test() {
}
public void test02() {
}
}
//4.接口的多继承
interface Father{
void test03();
}
//多继承接口
interface Dson extends Maker,Father{
}
//如果实现有多继承的接口,那么要实现所有的抽象方法
public static class DDson implements Dson{
public void test() {
}
public void test02() {
}
public void test03() {
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
Son s=new Son();
s.test();
}
}
接口
- 所谓接口可以看作是没有实现的方法和常量的集合。接口与抽象类相似,接口中的方法只是做了声明,而没有定义任何具体的操作方法。使用接口是为了解决Java语言中不支持多重继承的问题
- 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
- 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法
接口与类的区别:
接口不能用于实例化对象。
接口没有构造方法。
接口中所有的方法必须是抽象方法。
接口不能包含成员变量,除了 static 和 final 变量。
接口不是被类继承了,而是要被类实现。
接口支持多继承
接口特性:
接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
接口的声明语法格式如下:
[可见度] interface 接口名称 [extends 其他的接口名] {
// 声明变量
// 抽象方法
}
接口的实现:
类使用implements关键字实现接口,当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
//...implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...
//Son是类,Maker是接口
public class Son implements Maker{
}
//或:Son是类,Maker,Maker1是接口
public class Son implements Maker,Maker1{
}
final关键字
- final是一个非访问修饰符
- 适用于变量,方法或类
- 作用:
当final修饰变量时,被修饰的变量必须被初始化(赋值),且后续不能修改其值,实质上是常量;
当final修饰方法时,被修饰的方法无法被所在类的子类重写(覆写);
当final修饰类时,被修饰的类不能被继承,并且final类中的所有成员方法都会被隐式地指定为final方法,但成员变量则不会变
static关键字
- static关键字修饰的方法或者变量不需要依赖于对象来进行访问,可以通过类名去进行访问
- static是不允许用来修饰局部变量
作用:方便在没有创建对象的情况下来进行调用(方法/变量)
异常
所有的异常类是从 java.lang.Exception 类继承的子类。
格式:
try{
// 程序代码
}catch(异常类型1 异常的变量名1){
// 异常处理代码
}catch(异常类型2 异常的变量名2){
// 异常处理代码
}catch(异常类型2 异常的变量名2){
// 异常处理代码
}finally{//可写可不写
//总会被执行
}