抽象类和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、抽象类和接口的区别

  • 抽象类可以定义抽象方法和普通方法,接口只能定义抽象方法
  • 抽象类只能被实现类单继承,但是一个实现类可以同时实现多个接口
相关文章
|
1月前
|
C#
C# 接口(Interface)
接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同 "是什么" 部分,派生类定义了语法合同 "怎么做" 部分。 接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结构。 接口使得实现接口的类或结构在形式上保持一致。 抽象类在某种程度上与接口类似,但是,它们大多只是用在当只有少数方法由基类声明由派生类实现时。 接口本身并不实现任何功能,它只是和声明实现该接口的对象订立一个必须实现哪些行为的契约。 抽象类不能直接实例化,但允许派生出具体的,具有实际功能的类。
49 9
|
Java
JAVA 抽象类(Abstract Class) 和 接口(Interface) 的区别
对于面向对象编程来说,抽象是它的一大特征之一。在 Java 中,可以通过两种形式来体现 OOP 的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。今天我们就一起来学习一下Java中的接口和抽象类抽象类不能用于实例化对象,抽象类往往用来表示抽象概念。举个例子,中国人(Chinese 类)和美国人(American 类)都有“吃饭”这个行为,因此可以先定义一个 Person 类,然后让 Chinese 和 American 都继承这个类。但如何在父类 Person 中定义“吃饭”这个方法呢?一般
129 0
|
6月前
|
Java
接口(interface)
接口(interface)
|
11月前
|
程序员 C#
C# 类实现接口(Interface) 多态 多继承
C# 类实现接口(Interface) 多态 多继承
|
Java
Java面向对象 接口(interface)的详解
Java面向对象 接口(interface)的详解
98 0
抽象类和接口(Abstract and Interface)精湛细节
抽象类和接口(Abstract and Interface)精湛细节
|
Java 开发者
抽象类(abstract class)和接口(Interface)的区别
还在等什么,快来一起讨论关注吧,公众号【八点半技术站】,欢迎加入社群
|
程序员 PHP 开发者
抽象类 Abstract|学习笔记
快速学习抽象类 Abstract
抽象类 Abstract|学习笔记
【Java】抽象类(abstract)、接口(interface)
【Java】抽象类(abstract)、接口(interface)
|
Java
Java - abstract(抽象类)& interface(接口)
Java - abstract(抽象类)& interface(接口)
118 0
Java - abstract(抽象类)& interface(接口)