title: Java——基础知识(九)——抽象类与抽象方法、接口
author: UDK
date: 2021/05/09
updated: 2021/05/09
categories: Java基础知识
抽象方法
- 没有方法体的方法
- 抽象方法要求结尾必须加分号
- 修饰符必须带有abstract
- 必须在抽象类内,抽象类内不一定全是抽象方法
abstract class A
{
abstract public void f();
}
抽象类
- 不能实例化对象的类
- 利用抽象类可以更加方便地对类进行分类
- 抽象类通常是一个类组最顶层的父类
- 抽象类内可以有非抽象方法
abstract class A
{
abstract public void f(); //抽象方法
public void f2() //非抽象方法
{
}
int a;
}
接口(interface)
更加严格的抽象方法
接口要求
- 接口中的属性(成员变量)必须是public static final 的
- 接口中定义的方法必须是 public abstract (可省略)
- 接口中的属性不能被更改(public static final)
- 一个类只能实现(implements)某个接口,不能继承接口
- 接口可以继承接口,且可以一次继承多个接口(注意区分接口和接口里的方法,接口是interface,外面那层大的)
- 一个类只实现了一个接口的部分方法,那么该类必须被声明为抽象类
- 实现接口的方法必须是public修饰的
- 一个类可以在继承某个父类的同时实现某个或多个接口,但是extends关键字必须在implements之前
- 不可以new接口(对接口实例化),但是可以定义一个接口引用类型的变量并将其指向实现接口的对象,以达到多态的目的
定义接口
interface It
{
int i=20;
abstract void f();
}
接口的实现和使用
interface It
{
int i=20;
abstract void f();
}
class A implements It //实现接口
{
public void f()
{
System.out.printf("%d\n",i);
}
}
class B extends A implements It //先继承再实现
{
}
public class Main
{
public static void main(String [] args)
{
A a = new A();
a.f();
}
}
接口的继承
interface A
{
}
interface B extends A
{
}
interface C extends B //C接口此时拥有A和B接口的所有属性
{
}
interface D
{
}
class I implements B,D //I此时实现了ABCD接口
{
}