Java-接口和抽象类

男娘i 2022-11-27 10:19 272阅读 0赞

抽象类写法及作用范围

  • 随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更通用。
  • 类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类。
  • 用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。
  • 抽象方法:只有方法的声明,没有方法的实现。以分号结束。abstract int abstractMethod1( int a );
  • 含有抽象方法的类必须被声明为抽象类。
  • 抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体。
  • Abstract不能用来修饰属性、构造器、private、static、final。

抽象类的特点:

  1. 抽象方法所在的类必须是抽象类
  2. 抽象类不能进行实例化
  3. 如果要实现一个抽象类,创建一个子类去继承这个抽象类
  4. 子类继承抽象类以后,必须重写抽象类里面所有的抽象方法(前提子类不是抽象类)
  5. 抽象类里面可以定义普通方法
  6. 抽象类可以定义构造方法

抽象方法的特点:只能方法的定义,没有方法体

抽象类和一般类的区别

  • 相同点:

    • 抽象类和一般类都是用来描述事物的,都在内部定了成员。
  • 不同点:

    • 一般类有足够的信息描述事物;抽象类描述事物的信息有可能不足。
    • 一般类中不能定义抽象方法,只能定非抽象方法。抽象类中可定义抽象方法,同时也可以定义非抽象方法。
    • 一般类可以被实例化。抽象类不可以被实例化。

注意不能用abstract修饰属性、私有方法、构造器、静态方法、final的方法

接口写法及作用范围

什么是接口?

  • 接口可以理解为对一组方法声明进行的统一命名,但这些于方法没有提供任何实现。也就是说,把一组方法声明放在在一个接口中,然后继承该接口的类都需要实现这些方法。
  • 通过接口,你可以对方法进行同一管理,继承接口的类只需实现这些方法就可以了。
  • 有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。
  • 接口(interface)是抽象方法和常量值的定义的集合。
  • 一个类可以实现多个接口,接口也可以继承其它接口。

接口的作用

  • 可以实现不同类的相同行为,不需要考虑类之间的层次关系;
  • 可以指明多个类需要实现的方法;
  • 可以使处于不同层次甚至互不相关的类具有相同的行为。
  • 接口主要用来定义规范。解除耦合关系。

接口的特点:

  • 用interface来定义。
  • 接口中的所有成员变量都默认是由public static final修饰的。
  • 接口中的所有方法都默认是由public abstract修饰的。
  • 接口没有构造器。
  • 接口采用多继承机制。
  • 接口是一种特殊的抽象类,不能被实例化。

定义和实现接口

在java中使用关键字interface来定义接口

  1. interface InterfaceA{ }

使用关键字implements来实现接口

  1. class SubClassimplements InterfaceA{ }

一个类可以实现多个接口

  1. class SubClassextends SuperClassimplements InterfaceA, InterfaceB{ }

接口与接口之间是继承关系,使用extends关键字,而且接口可以多继承

  1. interface InterfaceAextends InterfaceB{ }

抽象类和接口的区别

相同点:

  • 接口和抽象类都不能被实例化。只能被其他类实现和继承。
  • 接口和抽象类都可以包含抽象方法,实现接口和抽象类的类都必须实现这些抽象方法,否则实现的类就是抽象类。

不同点:

  • 抽象类与接口定义不同:抽象类abstract class ,接口interface
  • 接口里只能包含抽象方法,不包含已经实现的方法;抽象类则完全可以包含普通的方法。
  • 接口里不能定义静态方法;抽象类可以定义静态方法
  • 接口里只能定义静态常量属性,不能定义普通属性;抽象类里既可以定义普通属性,也可以定义静态常量
  • 接口不包含构造函数;抽象类可以包含构造函数,抽象类里的构造函数并不是用于创建对象,而是让其子类调用这些构造函数来完成属于抽象类的初始化操作。
  • 接口不包含初始化块,但抽象类可以包含初始化块
  • 一个类最多只能有一个直接父类,包括抽象类;但一个类可以直接实现多个接口,通过实现多个接口可以弥补Java的单继承不足

发表评论

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

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

相关阅读

    相关 Java-接口抽象

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

    相关 Java 抽象接口

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

    相关 JAVA抽象接口

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

    相关 Java抽象接口

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

    相关 java接口抽象

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

    相关 JAVA抽象接口

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

    相关 Java抽象接口

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