Java抽象类和接口

旧城等待, 2022-05-17 23:29 325阅读 0赞

父类定义了子类中的共同行为,接口定义不同类的共同行为。

抽象类

抽象类不可 new 一个实例,可以包含抽象方法,没有实现,这些方法在子类中实现。

使用 abstract 修饰符表示,用在方法或者类前。

包含抽象方法的类必须声明为抽象类。

抽象类的构造方法定义为 protected,因为只能被子类调用

注意:子类可以覆盖父类的方法并定义为 abstract,为了使父类的方法变得无效;

  1. 父类是具体的,子类也可以定义为抽象类。

接口

接口和类很相似,但是只包含常量和抽象方法。

目的是为了指明各种对象的共同行为。表示 “is-kind-of” 关系

使用关键字 interface 定义一个接口,语法:

修饰符 interface 接口名{

  1. /\*\* 常量声明 \*/
  2. /\*\* 方法签名 \*/

}

某个类实现该接口时,使用关键字 implement ,这种关系称为接口继承,和类继承本质相同,都简称 继承。

接口和抽象类的比较

抽象类:变量和方法无限制;子类通过构造方法链调用构造方法,不能用new实例化。

接口:变量必须是 public static final;方法必须是 public abstract 实例方法;没有构造方法;不能用new实例化。

一般 类名是名词,接口名是形容词或者名词。

举栗子

  1. package test;
  2. interface A {
  3. public static final String MSG = "hello"; // 全局常量
  4. public abstract void print(); // 抽象方法
  5. }
  6. interface B {
  7. public abstract void get();
  8. }
  9. class X implements A, B {
  10. @Override
  11. public void print() {
  12. System.out.println("AAAAA");
  13. }
  14. @Override
  15. public void get() {
  16. System.out.println("BBBBB");
  17. }
  18. }
  19. public class test {
  20. public static void main(String[] args) {
  21. // 第一个测试
  22. X x = new X(); // 实例化子类对象
  23. A a = x; // 向上转型
  24. B b = x; // 向上转型
  25. a.print();
  26. b.get();
  27. System.out.println(A.MSG);
  28. // 第二个测试
  29. A aa = new X();
  30. B bb = (B) aa;
  31. bb.get();
  32. // 第三个测试
  33. A aaa = new X();
  34. B bbb = (B) aaa;
  35. bbb.get();// aaa本质上是X对象的实例
  36. System.out.println(aaa instanceof A);
  37. System.out.println(aaa instanceof B);
  38. }
  39. }
  40. // 程序运行结果:
  41. // AAAAA
  42. // BBBBB
  43. // hello
  44. //BBBBB
  45. //BBBBB
  46. //true
  47. //true

发表评论

表情:
评论列表 (有 0 条评论,325人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java-接口抽象

    抽象类写法及作用范围 随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更通用。 类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽

    相关 Java 抽象接口

    抽象类 一.抽象类的含义 当多个类中出现相同的功能,但是功能主体不一样,这时候可以进行向上抽取,只抽取功能定义,而不抽取功能主题,并将这些功能定义封装进一个类,,

    相关 JAVA抽象接口

    本文是本人学习网络上各位大牛的总结。 一、抽象类 1. 在面向对象领域由于抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能实例化的。 2. 抽

    相关 Java抽象接口

    抽象类是一种功能不全的类,接口是一个抽象方法声明和静态不能被修改的数据的集合,两者都不能被实例化。从某种意义上说,接口是一种特殊形式的抽象类,在Java语言中,抽象类表示一种继

    相关 java接口抽象

    1、抽象类最大的特征就是在普通类的基础上追加了抽象方法,而事实上抽象类定义里面也存在有若干的问题 。将抽象方法和普通方法写在一起有些乱 。抽象类本身会存在单继承的局限

    相关 JAVA抽象接口

    抽象类: 定义一个类的时候,常常需要定义一些方法来描述该类的行为特征,但有时候这些方法的实现方式无法确定。 针对这种情况,Java允许在定义方法的时候可以不写方法体,不

    相关 Java抽象接口

    父类定义了子类中的共同行为,接口定义不同类的共同行为。 抽象类 抽象类不可 new 一个实例,可以包含抽象方法,没有实现,这些方法在子类中实现。 使用 abstrac