文档章节

用代码小例子解释JAVA中的抽象类和接口

刘宁Leo
 刘宁Leo
发布于 2017/07/15 06:07
字数 304
阅读 24
收藏 0

1. 我想举一个具体的例子来说明什么是抽象类:

比如我想定义一个类Cat,又想定义一个类Dog,可是Cat和Dog之间既有相同点,又有不同点,那我就要创造一个抽象类Animal,这样使Cat和Dog都继承自Animal。

2. 那接口(interface)是什么呢?

可以把接口看成是抽象类的一种延伸,更进一步说,接口更像是一组方法的集合。

3. 下面我用具体的代码来让大家感受一下抽象类和接口:

还是用猫和狗的例子,猫和狗都继承于动物类,实现了吃东西(Eat)的接口。

//声明一个抽象类Animal
public abstract class Animal {
    public abstract void say();
}
//声明一个接口Eat
public interface Eat {
	void eatFood();
}
//Cat继承自Animal
public class Cat extends Animal implements Eat{
	@Override
	public void say() {
        System.out.println("Meow~");
    }

	@Override
	public void eatFood() {
		System.out.println("The cat is eating fish.");
	}
}
//Dog继承自Animal
public class Dog extends Animal implements Eat{
	@Override
	public void say() {
        System.out.println("Wang~");
    }

	@Override
	public void eatFood() {
		// TODO Auto-generated method stub
		System.out.println("The dog is eating bone.");
	}
}

public class Test {
    public static void main(String[] args) {
        //实例化对象
        Cat cat = new Cat();
        Dog dog = new Dog();

        cat.say();
        cat.eatFood();
        dog.say();
        dog.eatFood();
    }
}

 

© 著作权归作者所有

刘宁Leo
粉丝 0
博文 6
码字总数 928
作品 0
法国
私信 提问
云妹总结了一些最最最常见的Java面试题供大家参考

云妹导读:String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的? String和StringBuffer、StringBuilder的区别 可变性 String类中使用字符数组:private final cha...

阿里云科技快讯
2018/08/17
0
0
最最最常见的Java面试题总结——第二周

String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的? String和StringBuffer、StringBuilder的区别 可变性   String类中使用字符数组:保存字符串,所以String对象是...

Amsour丶
2018/08/13
0
0
115个Java面试题及回答

解释下可用的线程状态. 在执行期间, 线程会处于以下状态中的一种: Runnable: 线程已准备就绪, 但没有立即运行. Running: 处理器正在执行的线程代码. Waiting: 处于阻塞状态的线程, 等待外部某...

Yamazaki
2014/04/25
10
0
[敏捷JAVA读书笔记-java基础部分] 第一章

今年年初到海淀图书城购买了一个Agile Java(敏捷java),匆匆翻看了几章就束之高阁,最近在班车上无事可做,拿出来重读一下,一方面学一下TDD,一方面梳理一下自己的JAVA基础知识,读书的时间...

穿越星辰
2010/05/13
102
0
JAVA接口的概念、分类及与抽象类的区别

Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(...

郭二翔
2011/12/17
992
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
10
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0
PHP+Ajax微信手机端九宫格抽奖实例

PHP+Ajax结合lottery.js制作的一款微信手机端九宫格抽奖实例,抽奖完成后有收货地址添加表单出现。支持可以设置中奖概率等。 奖品列表 <div class="lottery_list clearfix" id="lottery"> ......

ymkjs1990
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部