1.抽象类和抽象方法
1.1.为什么需要抽象类
- Java中使用抽象类是为了更好的对类进行分类。
抽象类通常用来作为一个类族最顶层的父类,表示该类族所有事物的共性,用底层的类表示具体事物,比如在现实生活中有苹果类、西瓜类等等,这些具体的类都可以抽象为“水果类”。
1.2.语法规则
抽象类是专门设计为子类继承的类,通常都包括一个或多个抽象方法,根据继承抽象类的子类的实际情况,由子类完成其抽象方法的代码。
- 抽象方法
- 没有方法体的方法称为抽象方法,用
abstract
关键词修饰; - 含有抽象方法的类必须声明为抽象类;
- 没有方法体的方法称为抽象方法,用
- 抽象类
- 定义一个类的时候,在类名前加
abstract
关键词表示这个类是抽象类; - 抽象类不能创建具体的对象(比如水果类不能创建一个具体的水果);
- 抽象类可以包含普通方法;
- 抽象类不一定有抽象方法,有抽象方法的一定是抽象类;
- 定义一个类的时候,在类名前加
1.3.示例程序
/**
* @brief 抽象类和抽象方法示例程序
* @author mculvoer666
* @date 2019/5/1
*/
/**
* 水果类(抽象类)
*/
abstract class Fruit
{
/**
* 获取信息方法(抽象方法)
*/
abstract public void get();
}
/**
* 苹果类,继承自水果类
*/
class Apple extends Fruit
{
/**
* 重写父类方法get
*/
public void get()
{
System.out.println("I am a Apple.");
}
}
/**
* 香蕉类,继承自水果类
*/
class Banana extends Fruit
{
/**
* 重写父类方法get
*/
public void get()
{
System.out.println("I am a Banana.");
}
}
class TestAbstract
{
public static void main(String[] args) {
Apple apple1 = new Apple();
Banana banana1 = new Banana();
apple1.get();
banana1.get();
}
}
执行结果如图:
2.接口
2.1.什么是接口
接口是一种特殊的抽象类。
2.2.语法规则
- 接口的定义格式:
<访问控制符> interface <接口名>
{
/* 变量声明 */
/* 抽象方法声明 */
}
- 关于接口中的变量:
- 接口里面的变量自动被赋予
public static final
,且必须以常量值初始化; - 实际开发中,接口中定义的变量作为全局变量使用;
- 接口中变量的访问形式:
<接口名>.<变量名>
- 接口中定义的成员变量在实现类中不能被更改;
- 接口里面的变量自动被赋予
- 关于接口中的抽象方法:
- 接口里面的方法都是抽象方法,自动被赋予
public abstract
; - 接口中定义方法不能使用
protected、private、static、final
等关键字修饰;
- 接口里面的方法都是抽象方法,自动被赋予
- 关于接口的访问控制符:
- 接口的访问控制符只能是
public
或者默认
; - 如果接口的访问控制符是public,那么其中的成员变量和抽象方法不管有没有声明权限,都是public;
- 接口的访问控制符只能是
- 关于接口的继承:
- 一个接口不能继承其他的类,但是可以继承接口,并且可以继承多个接口;
2.3.接口的实现
- 接口是一种特殊的抽象类,不能实例化(创造具体的对象);
- 接口可以被一个类实现;
- 一个类可以实现多个接口;
一个类实现接口的语法规则如下:
class <类名> implements <接口名>
{
}
2.4.接口示例程序
/**
* @brief 接口示例程序
* @author mculvoer666
* @date 2019/5/1
*/
/**
* 水果接口
*/
interface Fruit
{
/**
* 获取信息方法(抽象方法)
*/
abstract public void get();
}
/**
* 苹果类,实现水果接口
*/
class Apple implements Fruit
{
/**
* 重写父类方法get
*/
public void get()
{
System.out.println("I am a Apple.");
}
}
/**
* 香蕉类,实现水果接口
*/
class Banana implements Fruit
{
/**
* 重写父类方法get
*/
public void get()
{
System.out.println("I am a Banana.");
}
}
class TestInterface
{
public static void main(String[] args) {
Apple apple1 = new Apple();
Banana banana1 = new Banana();
apple1.get();
banana1.get();
}
}
运行结果如下:
接收更多精彩文章及资源推送,欢迎订阅我的微信公众号:『mculover666』。