* --总结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"); } }