Java implements和extends的区别
Java implements和extends的区别
implements
关键字implements是一个类,实现一个接口用的关键字,它是用来实现接口中定义的抽象方法。实现一个接口,必须实现接口中的所有方法。使用 implements 关键字可以变相地使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)
注意点:
- 接口可以被多重实现(implements),抽象类只能被单一继承(extends)
- 接口只有定义,抽象类可以有定义和实现
- 接口的字段定义默认为:public static final,抽象类字段默认是friendly
接口的作用:
接口是软件编程的规范,可以降低耦合性,换句话说,可以让某个模块或功能能够重复利用,这样只要写一次功能代码就行。其他地方要用到的,全部用接口调用来实现。
接口的优势:
- “接口+实现”最常见的优势就是实现类和接口分离,在更换实现类的时候,不用更换接口功能。
- 这对于做单元测试也非常有帮助。
DEMO
定义两个接口Bread、Milk并(implements)单一实现
//定义Bread接口
public interface Bread{//定义一个方法吃面包(接口中没有具体的实现方法体)public void eatBread();
}//Bread接口的实现类
public class BreadImpl implements Bread{//实现eatBread方法(接口的实现类中需要有具体的方法体)public void eatBread(){System.out.println("吃面包");}
}
public interface Milk{//定义一个方法喝牛奶public void drinkMilk();
}//Bread接口的实现类
public class MilkImpl implements Milk{//实现eatBread方法(接口的实现类中需要有具体的方法体)public void drinkMilk(){System.out.println("喝牛奶");}
}
多重实现 依照上面定义的接口进行多重实现
public class Man implements Bread,Milk{//实现了Bread接口中eatBread方法public void eatBread(){System.out.println("吃面包");}
//实现了Milk接口中drinkMilk方法public void drinkMilk(){System.out.println("喝牛奶");}
}
extends
关键字extends,表示对父类的继承,可以实现父类,也可以调用父类初始化。而且会覆盖父类定义的变量或者函数。在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。
区别
extends是继承类,implements是实现接口。
类只能继承一个,接口可以实现多个。
extends继承父类的时候可以重写父类的方法,也可以调用父类的非私有方法;implements实现接口,必须实现接口的所有方法。
extends后面跟的是类,表示继承关系;
如public class Dog extends Animal继承这个可以理解为继承父类的方法,父类中的方法可以在子类中用到;
实现接口就是在接口中定义了方法,这个方法要你自己去实现,接口可以看作一个标准,比如定义了一个动物的接口,它里面有 eat() 这个方法,则可以实现这个方法implements,这个方法是自己写,可以是吃苹果,吃梨子,香蕉,或者其他的。implements就是具体实现这个接口。
DEMO
类的继承格式
class 父类 {}class 子类 extends 父类 {}
开发动物类,其中动物分别为企鹅以及老鼠,要求如下:
企鹅:属性(姓名,id),方法(吃,睡,自我介绍)
老鼠:属性(姓名,id),方法(吃,睡,自我介绍)
企鹅类
public class Penguin { private String name; private int id; public Penguin(String myName, int myid) { name = myName; id = myid; } public void eat(){ System.out.println(name+"正在吃"); }public void sleep(){System.out.println(name+"正在睡");}public void introduction() { System.out.println("大家好!我是" + id + "号" + name + "."); }
}
老鼠类
public class Mouse { private String name; private int id; public Mouse(String myName, int myid) { name = myName; id = myid; } public void eat(){ System.out.println(name+"正在吃"); }public void sleep(){System.out.println(name+"正在睡");}public void introduction() { System.out.println("大家好!我是" + id + "号" + name + "."); }
}
公共父类
public class Animal { private String name; private int id; public Animal(String myName, int myid) { name = myName; id = myid;} public void eat(){ System.out.println(name+"正在吃"); }public void sleep(){System.out.println(name+"正在睡");}public void introduction() { System.out.println("大家好!我是" + id + "号" + name + "."); }
}
企鹅类
public class Penguin extends Animal { public Penguin(String myName, int myid) { super(myName, myid); }
}
老鼠类
public class Mouse extends Animal { public Mouse(String myName, int myid) { super(myName, myid); }
}
关键字super
在继承关系中,父类的成员变量、局部变量、方法被隐藏被子类常常覆盖,这时需要引用父类成员变量、局部变量、方法。
super.变量名,super.方法名,super.父类的构造方法;
关键字this
如果类的成员变量与局部变量重名,类的成员变量将被隐藏,如果要使用类的成员变量,需要使用this引用之。
this.变量名,this.方法名,this.父类的构造方法;
继承的特性
1.子类拥有父类非private的属性,方法。
2.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
3.子类可以用自己的方式实现父类的方法。
Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类,这是java继承区别于C++继承的一个特性。
4.提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。
参考文章:
java继承(implements与extends)总结
java中extends和implements的区别
Java implements和extends的区别相关推荐
- java中implements是什么意思_Java中implements和extends的区别
看到java中很多类有使用implements和extends,那么这两种用法有哪些区别呢,今天我们来分析一下. 简单说:1.extends是继承父类,只要那个类不是声明为final或者那个类定义为a ...
- implements和extends的区别
在准备软考的时候遇到了这个问题,自己基础不是很扎实,所以记下来. 简单说: 1.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承, 2.JAVA中不 ...
- Java implement意思_详解JAVA中implement和extends的区别
详解JAVA中implement和extends的区别 发布于 2020-4-14| 复制链接 摘记: 详解JAVA中implement和extends的区别extends是继承父类,只要那个类不是声 ...
- java中implement_详解JAVA中implement和extends的区别
详解JAVA中implement和extends的区别 extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,Java中不支持多重继承,但是可以用接口来实 ...
- 类的implements与extends区别
implements与extends的主要概念: implements 是实现(多实现) extends 是继承(单继承) 类只可以单继承 但是如果是接口的话(interface关键字修饰的类)就可以 ...
- java 接口与抽象类的区别
1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...
- Java和JavaScript之间的区别
1.简介 我们将在本文中比较Java语言和JavaScript语言. JavaScript由Netscape开发. 它最初是用于客户端的脚本语言,后来又用作客户端和服务器脚本的语言. Java由Jam ...
- java接口vm和dto的区别_第十八节:详解Java抽象类和接口的区别
前言 对于面向对象编程来说,抽象是它的特征之一. 在Java中,实现抽象的机制分两种,一为抽象类,二为接口. 抽象类为abstract class,接口为Interface. 今天来学习一下Java中 ...
- java接口和抽象类的区别(经典面试题)
java接口和抽象类的区别(经典面试题) 要了解接口和抽象类的区别,首先需要明白接口和抽象类的定义. 1.抽象类 包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可 ...
最新文章
- 增强的Internet域内网关路由协议
- 软考-信息系统项目管理师-项目整体管理
- 浅述 Docker 的容器编排
- d3.js 绘制极坐标图(polar plot)
- apache2 + django
- M-LSD 面向轻量化实时线段检测
- 华南理工大学计算机学院创新班,高校纷推创新班揽生源 逐步淘汰冷门专业
- 个人所得税计算java版
- 台式计算机通过电流,一台台式电脑正常工作的时候电流是多少安?谢谢
- 2018-2019-2 20189206 《密码与安全新技术专题》 第六次作业
- kallsyms_lookup_name使用简介
- c语言双重性,C语言双重循环应用初探
- 有趣的计算机课的作文,有趣的电脑课作文300字
- Oracle数据库中索引的维护
- HGVS制订的变异位点命名规则
- Word:表格在页面中垂直居中
- windows7开机壁纸_如何在Windows 7上修复黑色墙纸错误
- 在.NET中实现彩色光标/动画光标和自定义光标[转]
- 想通过参加会议年入30万,没这些能力可不行——百格活动
- shell基础--条件判断if和case