面向对象—接口
接口概念
package com.cloud.day2; /* 接口: 接口:拓展功能的。 usb接口.。。 接口的定义格式: interface 接口名{
} 接口要注意的事项: 1. 接口是一个特殊的类。 2. 接口的成员变量默认的修饰符为: public static final 。那么也就是说接口中的成员变量都是常量。 3. 接口中的方法都是抽象的方法,默认的修饰符为: public abstract。 4. 接口不能创建对象。 5. 接口是没有构造方法的。 6. 接口是给类去实现使用的,非抽象类实现一个接口的时候,必须要把接口中所有方法全部实现。
实现接口的格式: class 类名 implements 接口名{ } */ interface A{ public static final int i = 10; public void print(); } public class Demo1 implements A{ public static void main(String[] args) { Demo1 d = new Demo1(); d.print(); } @Override public void print() { System.out.println("接口中的方法...."); }
} |
接口的作用
package com.cloud.day2; /* 接口的作用: 1. 程序的解耦。 (低耦合) 2. 定义约束规范。 3. 拓展功能。 */ class Pencil{ String name; public Pencil(String name){ this.name = name; } public void write(){ System.out.println(name+"写字..."); } } interface Erase{ public void remove(); } //带橡皮的铅笔 class PencilErase extends Pencil implements Erase{ public PencilErase(String name) { super(name); } @Override public void remove() { System.out.println("修改..."); } } public class Demo2 { public static void main(String[] args) { PencilErase pe = new PencilErase("2B铅笔"); pe.write(); pe.remove(); } } |
实现接口
package com.cloud.day2; /* 需求:在现实生活中有部分同学在学校期间只会学习,但是有部分学生除了学习外还会赚钱。 interface (定义接口) implements (实现接口) 分析: 普通的学生类 接口 会挣钱的学生 */ class Student { String name; public Student(String name){ this.name = name; } public void study(){ System.out.println(name+"study..."); } } interface EarnMoney{ public void getMoney(); } class StudentMoney extends Student implements EarnMoney{ public StudentMoney(String name) { super(name); } @Override public void getMoney() { System.out.println("getMoney..."); } } public class Demo3 { public static void main(String[] args) { StudentMoney sm = new StudentMoney("ss"); sm.study(); sm.getMoney(); } } |
类和接口
package com.cloud.day2; /* 类与接口之间关系:实现关系。 类与接口要注意的事项: 1. 非抽象类实现一个接口时,必须要把接口中所有方法全部实现。 2. 抽象类实现一个接口时,可以实现也可以不实现接口中的方法。 3. 一个类可以实现多个接口。 疑问: java为什么不支持多继承,而支持了多实现呢? class A{ public void print(){ System.out.println("AAAAAA"); } } class B{ public void print(){ System.out.println("BBBBBB"); } } class C extends A ,B{ } new C().print();
接口与接口之间关系:继承关系。 接口与接口之间要注意事项: 1. 一个接口是可以继承多个接口的。 */ interface Aa{ public void print(); } interface Bb{ public void getArea(); } interface Cc extends Aa,Bb{ public void test(); } public class Demo4 implements Cc{ public static void main(String[] args) {
}
@Override public void print() {
} @Override public void getArea() {
} @Override public void test() {
} } |