package com.sky.bean; public interface People { public abstract void printPeopleType(); //抽象方法,实现类必须得重写它 }
package com.sky.bean; public class Student implements People { @Override public void printPeopleType() { System.out.print("\n学生"); } }
package com.sky.bean; public class Teacher implements People { @Override public void printPeopleType() { System.out.print("\n老师"); } }
一、 对外只是以一个函数名的形式,没有实际实现内容,保护源码java
二、实现统一入口,多个实现的扩展ide
package com.sky.run; import com.sky.bean.People; //接口 import com.sky.bean.Student;//People接口的实现类 1 import com.sky.bean.Teacher;//People接口的实现类 2 public class Main { public static void main(String[] args) { //可扩展成不一样的实现 printPeopleType(new Student()); //输出学生 printPeopleType(new Teacher()); //输出老师 } private static void printPeopleType(People people) { //统一入口 people.printPeopleType(); } }
1. 接口不能用于实例化对象,但能够声明,后面能够new 实例化它的实现类给这个接口声明对象。函数
2. 接口没有构造方法。spa
3. 接口中全部的方法必须是抽象方法。(java新特性,容许接口方法为非抽象!).net
4. 接口不能包含成员变量,写了不能使用,由于不能实例化接口,如何调用?除了 static 和 final 变量。由于能够直接经过类名调用!code
5. 一个接口实现类能够同时实现多个接口类。对象
package com.sky.bean; public class Student implements People,People2 { @Override public void printPeopleType() { System.out.print("\n学生"); } @Override public void printPeopleType2() { System.out.print("\n学生2"); } }
package com.sky.run; import com.sky.bean.People; //接口 import com.sky.bean.Student;//People接口的实现类 1 import com.sky.bean.Teacher;//People接口的实现类 2 public class Main { public static void main(String[] args) { //可扩展成不一样的实现 Student student = new Student(); printPeopleType(student); //输出接口1:People ----学生1 student.printPeopleType2();// 输出接口2:People2 ----学生2 printPeopleType(new Teacher()); } private static void printPeopleType(People people) { //统一入口 people.printPeopleType(); } }
1. 抽象类除了不能实例化对象以外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类同样。因为抽象类不能实例化对象,因此抽象类必须被继承,才能被使用。继承
父类(抽象类)接口
package com.sky.service; public abstract class Father { public String a = " 经过super取得父类的属性值 a"; public void fun1(){ System.out.print("\n 这是 Father.fun1()"); } }
子类(继承父类)get
package com.sky.service; public class Child extends Father { //重写 @Override public void fun1(){ System.out.print("\n 这是 Father.fun1() 在子类被 重写"+super.a); } //重载 public void fun1(String str){ System.out.print("\n 这是 Father.fun1() 在子类被 "+str+super.a); } public void fun2(){ System.out.print("\n 这是 子类本身独有的方法,非继承方法"); } }
不能实例化父类,由于它是抽象类,须要经过继承它的子类访问它的属性和方法
Child child = new Child(); child.fun1(); //重写父类的方法 child.fun1("重载"); //重载父类的方法 child.fun2(); //子类新增的方法,非继承
2. 而接口类是什么都没有,就只有一个空壳子!