首页 > 代码库 > javaSE中抽象类以及接口概述

javaSE中抽象类以及接口概述

一丶抽象类
 1 关键字abstract(可以修饰类和方法)
  (1)abstract修饰方法(抽象方法)
    a.没有了方法体; egg:public abstract void show();
    b.抽象方法只保留方法的功能,子类必须重写此方法。
  (2)abstract修饰类(抽象类)
    a.有抽象方法的类必须定义为抽象类,抽象类中可以有抽象方法,也可以有非抽象方法;
    b.有构造器,但抽象类不可被实例化,可以通过抽象类的多态来间接对创建对象。
   egg:
    abstract class A{  //抽象类
     public abstract void show();
    }
    class B extends A{
     @Override
     public void show(){
      System.out.println("这是子类重写的父类抽象方法");
     }
    }
    public class Test(){
     public static void main(String[] args){
      A a = new B();
      a.show(); //这是子类重写的父类抽象方法
     }
    }

  (3)不能与abstract共存的关键字(对于抽象方法来说)
    a.private:有冲突 private私有的 不能被子类继承,但是被abstract修饰的抽象方法需要子类对其重写;
    b.final:有冲突 final最终的 修饰方法其方法不能被重写;
    c:static:无意义 static静态的 被static修饰的方法可以直接通过类名.方法访问,而被abstract修饰的抽象方法没有方法体。
 2 抽象类的子类的特点
  其子类可以是抽象类,也可以是非抽象类;通过继承(extends)父类重写抽象方法,去使用自己的功能
   子类是抽象类:没有任何意义,因为抽象类不能直接实例化,就不能调用方法;
   子类是非抽象类:子类必须重写抽象类中所有的抽象方法,抽象类要创建对象必须通过子类来实现。
二丶接口(interface)
 1 定义(接口不是类,与类是并列关系)
  接口可以看作是一个特殊的抽象类,是常量与抽象方法的集合。
  格式:
    interface 接口名{
    
    }
 2 特点
  a.接口成员变量:必须是常量;默认由 public static final 修饰;
  b.接口的成员方法:必须是抽象方法;默认由 public abstract 修饰;
  c.接口没有构造器,不能实例化,可以通过接口的多态间接创建对象;
  d.接口定义的就是一种功能,比如学生和老师中有一部分人会说英语 此时学生 和老师定义为类,说英语就可以定义为一个接口,被类实现(implements);
  e.实现接口的的类,必须要重写其中的所有方法;

技术分享

      f.类可以继承一个类同时实现多个接口;
      g.接口与接口之间是继承关系,而且可以多继承。
   egg:
    abstract class A{}
    interface B1{}
    interface B2{}
    interface B3{}
    interface B4 extends B2,B3{}
    class C extends A implements B1,B2,B3,B4{}

三丶抽象类与接口的区别
 1 成员的区别
  抽象类: 成员变量:可以是变量,也可以是常量;
     成员方法:可以有抽象方法,也可以有非抽象方法,其子类需重写其抽象方法;
     构造方法:有自己的构造方法 有参/无参。(凡是类都有构造器)
  接口:
     成员变量:默认被 public static final 修饰,必须是常量,可以通过 接口名.变量名 的方式之间访问;
     成员方法:默认被 public abstract 修饰, 必须是抽象方法,其子实现类必须重写其所有方法;
     构造方法:没有构造器
 2 关系的区别
  类与类:单继承
  接口与接口:多继承
  类与接口:多实现
   注意:一个类继承一个类的同时还可以多实现多个接口。
 3 设计理念的区别
  抽象类: 是类的一种,他可以当成一种、一类抽象事物;
  接口:  区别与类,与类并列,是一种功能的体现。
  egg:教练和运动员案例
    乒乓球运动员和篮球运动员。
    乒乓球教练和篮球教练。
    为了出国交流,跟乒乓球相关的人员都需要学习英语。
   请用所学知识:
    分析,这个案例中有哪些抽象类,哪些接口,哪些具体类
    方案:

技术分享

javaSE中抽象类以及接口概述