学习java第十二天
接口
1、定义接口的重要性:在Java编程,abstract class 和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在,才使得Java成为面向对象的编程语言。
2、定义接口有利于代码的规范:对于一个大型项目而言,架构师往往会对一些主要的接口来进行定义,或者清理一些没有必要的接口。这样做的目的一方面是为了给开发人员一个清晰的指示,告诉他们哪些业务需要实现;同时也能防止由于开发人员随意命名而导致的命名不清晰和代码混乱,影响开发效率。
3、有利于对代码进行维护:比如你要做一个画板程序,其中里面有一个面板类,主要负责绘画功能,然后你就这样定义了这个类。可是在不久将来,你突然发现现有的类已经不能够满足需要,然后你又要重新设计这个类,更糟糕是你可能要放弃这个类,那么其他地方可能有引用他,这样修改起来很麻烦。如果你一开始定义一个接口,把绘制功能放在接口里,然后定义类时实现这个接口,然后你只要用这个接口去引用实现它的类就行了,以后要换的话只不过是引用另一个类而已,这样就达到维护、拓展的方便性。
4、保证代码的安全和严密:一个好的程序一定符合高内聚低耦合的特征,那么实现低耦合,定义接口是一个很好的方法,能够让系统的功能较好地实现,而不涉及任何具体的实现细节。这样就比较安全、严密一些,这一思想一般在软件开发中较为常见。
定义接口的步骤
1、定义一个接口
2、实现一个接口,并且重写里面所有的抽象方法
3、传建一个实现类
例题1
package com.hg.day12.demo01;
//在任何Java版本中 接口都是抽象方法
//public abstract 返回值类型 方法名称(参数列表);
//注意事项:
// 抽象方法 修饰字必须是 public abstract
// 关键字可以省略(ps:今天不能省略)
public interface MyInterface {
public abstract void methodA();
abstract void methodB();
public void methodC();
void methodD();
}
package com.hg.day12.demo01;
import com.hg.day12.demo01.MyInterface;
public class MyInterfaceImpl implements MyInterface {
@Override
public void methodA() {
System.out.println("实现抽象方法A");
}
@Override
public void methodB() {
System.out.println("实现抽象方法B");
}
@Override
public void methodC() {
System.out.println("实现抽象方法C");
}
@Override
public void methodD() {
System.out.println("实现抽象方法D");
}
}
package com.hg.day12.demo01;
//1、如何定义一个接口
//public class 类名 {}
//public interface 接口名称{接口内容}
//2、接口内容
// java7常量
// java7抽象方法
// java8默认方法
// java8静态方法
// java9私有方法
//使用接口的步骤
//1、定义一个接口
//2、实现一个接口,并且重写里面所有的抽象方法
//3、创建一个实现类
public class Demo01Interface {
public static void main(String[] args) {
//MyInterface myinterface = new MyInterface();
//错误写法 不能对接口实例化
MyInterfaceImpl impl = new MyInterfaceImpl();
impl.methodA();
impl.methodB();
impl.methodC();
impl.methodD();
}
}
例题2
package com.hg.day12.demo02;
public interface MyInterfaceDefault {
public abstract void usb2();
//将USB2.0升级到3.0
public default void usb3() {
System.out.println("这是USB3.0新增加的功能");
}
}
package com.hg.day12.demo02;
public class MyInterfaceDefaultA implements MyInterfaceDefault{
@Override
public void usb2(){
System.out.println("我是笔记本电脑的USB2.0");
}
}
package com.hg.day12.demo02;
public class MyInterfaceDefaultA implements MyInterfaceDefault{
@Override
public void usb2(){
System.out.println("我是笔记本电脑的USB2.0");
}
}
package com.hg.day12.demo02;
public class Demo02Interface {
public static void main(String[] args) {
MyInterfaceDefaultA impla=new MyInterfaceDefaultA();
impla.usb2();
impla.usb3();
System.out.println("=================");
MyInterfaceDefaultB implb=new MyInterfaceDefaultB();
implb.usb2();
implb.usb3();
}
}