抽象类和interface

简介: 抽象类和interface

抽象类

  • public abstract class Student
  • 抽象类的所有方法都必须由继承它的子类实现,除非子类也是抽象类
  • 抽象类中一定有构造器,便于子类实例化
  • 类是单继承,接口可以多继承
  • 不能new,只能靠子类实现(不可实例化),是一种约束
  • 只要有抽象方法,这个类就必须是抽象类,但是抽象类中也可以有非抽象的方法,反之抽象类中可以没有抽象方法
  • 抽象方法只有方法的声明没有方法体
  • 注意:abstract不能用来修饰私有方法、静态方法、final方法、final类(只要不能被继承的都不能修饰)

16、接口Interface

  • 只有规范,自己无法写方法,只能用于约束
  • 实现约束和实现分离(面向接口分离),在实现类中实现
  • public interface User{}
  • 类是单继承,接口可以多继承
  • 接口与接口之间可以继承,而且可以多继承
  • JDK7接口中的所有方法定义都默认是抽象的public abstract,定义的时候可以省去修饰符
  • JDK7接口中的所有属性都默认是抽象的public static final全局静态常量,定义的时候可以省去修饰符
  • JDK8除了可以定义全局常量和抽象方法之外,还可以定义静态方法、默认方法
  • 实现接口的类需要实现接口中的所有方法,否则不能实例化public class UserIm implements User{}
  • alt + enter 或 alt + insert
  • 接口不能定义构造器!意味着接口不能实例化
  • 使用Implement实现

作用

  • 一种约束
  • 定义一些方法,让不同的人实现
  • public abstract方法
  • public static final
  • 接口不能被实例化,接口中没有构造方法
  • Imple可以实现多个接口
  • 必须要重写接口中的所有方法

JDK8中接口的新特性

  • JDK8除了可以定义全局常量和抽象方法之外,还可以定义静态方法、默认方法
  • 接口中定义的静态方法只能通过接口来调用

  • 通过实现类的对象,可以调用接口中的默认方法。如果实现类重写了接口中的默认方法,调用时仍然调用的是重写以后的方法

  • 如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的方法,那么子类在没有重写此方法的情况下,默认调用的是父类中的同名同参数的方法(类优先原则)
  • 如果实现类实现了多个接口,而多个接口中定义了同名同参数的默认方法,那么在实现类没有重写此方法的情况下报错—> 接口冲突  这就需要我们必须在实现类中重写此方法

17、抽象类和接口的区别

  • 抽象类可以定义抽象方法和普通方法,接口只能定义抽象方法
  • 抽象类只能被实现类单继承,但是一个实现类可以同时实现多个接口
相关文章
|
Java
JAVA 抽象类(Abstract Class) 和 接口(Interface) 的区别
对于面向对象编程来说,抽象是它的一大特征之一。在 Java 中,可以通过两种形式来体现 OOP 的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。今天我们就一起来学习一下Java中的接口和抽象类抽象类不能用于实例化对象,抽象类往往用来表示抽象概念。举个例子,中国人(Chinese 类)和美国人(American 类)都有“吃饭”这个行为,因此可以先定义一个 Person 类,然后让 Chinese 和 American 都继承这个类。但如何在父类 Person 中定义“吃饭”这个方法呢?一般
154 0
|
程序员 C#
C# 类实现接口(Interface) 多态 多继承
C# 类实现接口(Interface) 多态 多继承
抽象类和接口(Abstract and Interface)精湛细节
抽象类和接口(Abstract and Interface)精湛细节
|
Java 开发者
抽象类(abstract class)和接口(Interface)的区别
还在等什么,快来一起讨论关注吧,公众号【八点半技术站】,欢迎加入社群
abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class)
105 0
【Java】抽象类(abstract)、接口(interface)
【Java】抽象类(abstract)、接口(interface)
|
Java
Java - abstract(抽象类)& interface(接口)
Java - abstract(抽象类)& interface(接口)
121 0
Java - abstract(抽象类)& interface(接口)
|
Java
接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类?抽象类中是否可以有静态的main方法?
有一个面试四连击的题目:接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类?抽象类中是否可以有静态的main方法?
167 0
接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类?抽象类中是否可以有静态的main方法?
接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?
接口可以继承接口,而且支持多重继承。抽象类可以实现(implements)接口,抽象类可继承具体类也可以继承抽象类。
1993 0
|
测试技术
抽象类abstract的一些思考
最近有个小朋友问我什么是抽象类,他一直搞不懂抽象类,让我通俗的给他讲下。Emmmmmm,我问他:你用抽象类干过哪些事情。他的回答也在意料之中:压根没用过。
925 0