* --总结JAVA抽象类和接口
* 1.抽象类:
*
1》抽象类可以修饰方法,修饰类,但不能修饰属性,不能被实例化
*
2》抽象类可以被继承,只能是单继承,继承抽象类必须实现抽象方法
*
3》抽象类不能被static ,fina,private一起修饰
*
4》抽象类是有多态性的
*
* 2.接口:
*
1》接口是一种特殊的抽象类,不能被实例化
*
2》接口申明的属性默认关键字为public abstract static
*
3》接口申明的方法默认关键字为 public abstract
*
4》接口是可以被继承的,接口可以被继承多个,也可已继承多个
*
5》接口是有多态的
*
package come.java.zhangfan.test3; public class Test { public static void main(String[] args) { Students s =new Students(); t1(s);//输出 --- woshi Student T t =new T(); t(t); } //抽象类的多态性 public static void t1(Person p ){ p.T(); } //接口的多态性 public static void t(Runner p){ p.run();//输出 - -- woshi Run } } //抽象类的应用 //申明抽象类 abstract class Person{ // 字段 i 的修饰符不合法;只允许使用“公用”、“受保护”、“私有”、“静态”、“终态”、“瞬态”或“易变” // 属性无法被覆盖 // abstract int i ; // 类型 Person 中的抽象方法 T 只能设置可视性修饰符“公用”或“受保护”中的一个 // 如果static 那么意味着可以不创建对象直接调用该方法,与abstact 冲突 // abstract static public void T(); // 类型 Person 中的抽象方法 T 只能设置可视性修饰符“公用”或“受保护”中的一个 // 本身就冲突,不解释 // abstract final public void T(); // 类型 Person 中的抽象方法 T 只能设置可视性修饰符“公用”或“受保护”中的一个 // 私有方法无法被覆盖 // abstract private void T(); abstract public void T(); //True } //申明一个Student类继承抽象类,并重写T方法 class Students extends Person{ public void T(){ System.out.println("woshi Student"); } } //接口的应用 interface Runner{ public abstract void run(); } interface Swimmer{ void swim(); } interface Flier { void fly(); } //接口可以多继承 interface t extends Runner,Swimmer,Flier{ } //必须申明所有继承的方法 class t1 implements t{ @Override public void run() { // TODO 自动生成的方法存根 } @Override public void swim() { // TODO 自动生成的方法存根 } @Override public void fly() { // TODO 自动生成的方法存根 } } //接口可以多引用//必须申明所有继承的方法 class T implements Flier,Runner,Swimmer{ @Override public void fly() { // TODO 自动生成的方法存根 System.out.println("woshi fly"); } @Override public void swim() { // TODO 自动生成的方法存根 System.out.println("woshi Swim"); } @Override public void run() { // TODO 自动生成的方法存根 System.out.println("woshi Run"); } }