接口
接口可以定义一定个规则,利用这些规定给类进行功能扩展。
接口的定义和使用
//定义接口
public interface 接口名1{
public abstract void 方法名1();
}
//定义接口
public interface 接口名2{
public abstract void 方法名2();
}
//实现接口
public class 类名 implements 接口名1,接口名2{
@Override
public void 方法名1(){
...
}
@Override
public void 方法名2(){
}
}
接口的成员特点
成员变量:只能是常量,默认被 public static final 修饰
构造方法:没有,也不能创建对象
成员方法:
JDK7:只能是抽象方法,默认被 public abstract 修饰。必须复写
JDK8: 可以写默认方法,被 public default 修饰的方法。可选复写
可以写静态方法,被 public static 修饰的方法。 使用接口名调用
JDK9: 可以写私有方法,被 private 修饰的方法。 只能在本接口中使用。
类与接口的关系
1.类与类: 单继承关系
2.类与接口: 多实现的关系,可以在继承的基础上实现多个接口
3.接口与接口:多继承关系
多态
多态指的是同一个对象,可以具有多种表现形态。
多态的前提:
1.需要有继承/实现的关系
2.需要有方法复写
3.父类/接口接收子类对象
Animal a = new Dog();
a.eat();
多态的成员访问特点
1.成员方法的访问特点
如果方法没有复写,执行父类的方法;如果有复写就执行子类的方法
2.成员变量的访问特点
只能访问父类的变量,父类没有就报错了。
多态的好处和弊端
1.好处:提高了代码的扩展性
把方法的参数写父类/接口,调用方法可以传递任意的子类对象
2.弊端:不能调用子类特有的方法
如果想调用子类特有方法,可以进行向下转型。
3.多态的转型
向上转型: Animal a=new Cat(); //多态的写法,就是向上转型
向下转型: 在多态的基础上,才能进行向下转型;原本是什么类型,才能还原成什么类型。
if(a instanceof Cat){
Cat cat=(Cat)a;
}
电脑使用Usb接口
//定义接口:制定规则
public interface Usb {
public void powerOn();
public void loadDriver();
public void run();
}
//实现类实现接口:遵守规则
public class UsbMouse implements Usb {
@Override
public void powerOn() {
System.out.println("鼠标通电");
}
@Override
public void loadDriver() {
System.out.println("加载鼠标的驱动程序");
}
@Override
public void run() {
System.out.println("鼠标运行");
}
}
//实现类实现接口:遵守规则
public class UsbKeyBoard implements Usb {
@Override
public void powerOn() {
System.out.println("键盘通电");
}
@Override
public void loadDriver() {
System.out.println("加载键盘的驱动程序");
}
@Override
public void run() {
System.out.println("键盘运行");
}
}
public class Computer {
//把接口方法的参数,调用方法时可以接收任意的子类对象
// Usb u = new UsbKeyBoard();
// Usb u=new UsbMouse();
public void function(Usb u) {
u.powerOn();
u.loadDriver();
u.run();
}
}
public class Demo2 {
public static void main(String[] args) {
Computer com = new Computer();
com.function(new UsbMouse());
com.function(new UsbKeyBoard());
}
}
文章转载自是汐江呀,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。