接着上一篇的基础知识,今天俺们来学习一下:
面向对象
(万物皆对象)
三大特征(封装、继承、多态)
接口
接口 概述:接口是一种引用数据类型,是方法的'集合',接口的内部主要是定义方法,包含常量、抽象方法(JDK7及以前)、默认方法和静态方法(JDK8)、私有方法(JDK9)。 interface 关键字//使用interface关键字来定义接口,会被编译成.class文件,但接口并不是类,而是另外一种引用数据类型。 定义: 格式: public interface 接口名{ //常量 //抽象方法 //默认方法 //静态方法 //私有方法 } public interface IA{ // 常量(jdk7): 修饰符是public static final,这三个关键字可以省略不写 public static final int NUM = 10; // 抽象方法(jdk7): 修饰符是public abstract,这2个关键字可以省略不写 public abstract void method1(); // 默认方法(jdk8): 修饰符是public default,只有public可以省略不写 public default void method2() { System.out.println("IA 默认方法method2"); } // 静态方法(jdk8): 修饰符是public static,只有public可以省略不写 public static void method3() { System.out.println("IA 静态方法method3"); } // 私有方法(jdk9): 修饰符是private,不可以省略 private void method4() { System.out.println("IA 私有非静态方法method4"); }
接口:实现接口
实现接口 概述:类与接口的关系为实现关系,即 类实现接口,该类可以称为接口的 实现类,也可以称为接口的子类。实现的动作类似继承,格式相仿,只是关键字不同,实现使用 implements 关键字。 注意: 额外的功能---> 在接口中定义,让实现类实现 如果可以确定的通用功能,使用默认方法 如果不能确定的功能,使用抽象方法 共性的功能---> 在父类中定义,让子类继承 如果可以确定的通用功能,使用默认方法 如果不能确定的功能,使用抽象方法 implements 关键字 //实现类用 实现格式: public class 实现类名 implements 接口名1,接口名2{} public class 实现类名 extends 父类名 implements 接口名1,接口名2{} //类可以实现一个接口,也可以同时实现多个接口。 public interface IA{ public void show1(); } public interface IB{ public void show2(); } public class Zi implements IA ,IB{ @Override public void show1(){//类实现接口后,必须重写接口中的所有抽象方法,否则该类必须是一个抽象类 } @Override public void show2(){//类实现接口后,必须重写接口中的所有抽象方法,否则该类必须是一个抽象类 } } //类可以在“继承一个类”的同时,实现一个、多个接口; public class Fu{} public interface IA{} public interface IB{} public class Zi extends Fu implements IA,IB{//一定要先继承,后实现 }
接口:接口中的成员访问特点/关系
接口中成员的访问特点 接口中的常量: 主要是供接口直接使用 接口中的抽象方法: 供实现类重写的 接口中的默认方法: 供实现类重写或者直接调用 接口中的静态方法: 只供接口直接调用,实现类继承不了 接口中的私有方法: 只能在接口中直接调用,实现类继承不了 接口与接口之间的关系 interface IA{} interface IB{} interface IC extends IA{}// 单继承 interface ID extends IA,IB{} // 多继承 interface IE extends ID{} // 多层继承 public class Test { public static void main(String[] args) { /* 接口和接口之间的关系: 继承关系 单继承 public interface 接口名 extends 父接口名{} 多继承 public interface 接口名 extends 父接口名1,父接口名2,...{} 多层继承 public interface 父接口名 extends 爷爷接口名{} public interface 子接口名 extends 父接口名{} */ } }
你有对接的接口吗?