疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

总结Java抽象类和接口


 

   

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

  }

  }