继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承可以理解为一个对象从另一个对象获取属性的过程。

如果类A是类B的父类,而类B是类C的父类,我们也称C是A的子类,类C是从类A继承而来的。在Java中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类
继承中最常使用的两个关键字是extends和implements。
这两个关键字的使用决定了一个对象和另一个对象是否是IS-A(是一个)关系。
通过使用这两个关键字,我们能实现一个对象获取另一个对象的属性。
所有Java的类均是由java.lang.Object类继承而来的,所以Object是所有类的祖先类,而除了Object外,所有类必须有一个父类。
通过过extends关键字可以申明一个类是继承另外一个类而来的,一般形式如下:
// A.java
public class A {
private int i;
protected int j;
public void func() {
}
}
// B.java
public class B extends A {
}
以上的代码片段说明,B由A继承而来的,B是A的子类。而A是Object的子类,这里可以不显示地声明。
作为子类,B的实例拥有A所有的成员变量,但对于private的成员变量B却没有访问权限,这保障了A的封装性。
IS-A关系
IS-A就是说:一个对象是另一个对象的一个分类。
下面是使用关键字extends实现继承。
public class Animal{
}
public class Mammal extends Animal{
}
public class Reptile extends Animal{
}
public class Dog extends Mammal{
}
基于上面的例子,以下说法是正确的:
Animal类是Mammal类的父类。
Animal类是Reptile类的父类。
Mammal类和Reptile类是Animal类的子类。
Dog类既是Mammal类的子类又是Animal类的子类。
分析以上示例中的IS-A关系,如下:
Mammal IS-A Animal
Reptile IS-A Animal
Dog IS-A Mammal
因此 : Dog IS-A Animal
通过使用关键字extends,子类可以继承父类所有的方法和属性,但是无法使用 private(私有) 的方法和属性。
我们通过使用instanceof 操作符,能够确定Mammal IS-A Animal
实例
public class Dog extends Mammal{
public static void main(String args[]){
Animal a = new Animal();
Mammal m = new Mammal();
Dog d = new Dog();
System.out.println(m instanceof Animal);
System.out.println(d instanceof Mammal);
System.out.println(d instanceof Animal);
}
}
以上实例编译运行结果如下:
true true true
介绍完extends关键字之后,我们再来看下implements关键字是怎样使用来表示IS-A关系。
Implements关键字使用在类继承接口的情况下, 这种情况不能使用关键字extends。
实例
public interface Animal {}
public class Mammal implements Animal{
}
public class Dog extends Mammal{
}
instanceof 关键字
可以使用 instanceof 运算符来检验Mammal和dog对象是否是Animal类的一个实例。
interface Animal{}
class Mammal implements Animal{}
public class Dog extends Mammal{
public static void main(String args[]){
Mammal m = new Mammal();
Dog d = new Dog();
System.out.println(m instanceof Animal);
System.out.println(d instanceof Mammal);
System.out.println(d instanceof Animal);
}
}
以上实例编译运行结果如下:
true true true
HAS-A 关系
HAS-A代表类和它的成员之间的从属关系。这有助于代码的重用和减少代码的错误。
例子
public class Vehicle{}
public class Speed{}
public class Van extends Vehicle{
private Speed sp;
}
Van类和Speed类是HAS-A关系(Van有一个Speed),这样就不用将Speed类的全部代码粘贴到Van类中了,并且Speed类也可以重复利用于多个应用程序。
在面向对象特性中,用户不必担心类的内部怎样实现。
Van类将实现的细节对用户隐藏起来,因此,用户只需要知道怎样调用Van类来完成某一功能,而不必知道Van类是自己来做还是调用其他类来做这些工作。
Java只支持单继承,也就是说,一个类不能继承多个类。
下面的做法是不合法的:
public class extends Animal, Mammal{}
Java只支持单继承(继承基本类和抽象类),但是我们可以用接口来实现(多继承接口来实现),脚本结构如:
public class Apple extends Fruit implements Fruit1, Fruit2{}
一般我们继承基本类和抽象类用extends关键字,实现接口类的继承用implements关键字。
本篇文章各位朋友可以参考下
# Java继承方法实例
# Java继承方法
# Java继承实例
# java的继承原理与实现方法详解
# 浅谈Java之终止继承:Final类和Fianl方法
# 详解 Java继承关系下的构造方法调用
# java实现多线程的两种方式继承Thread类和实现Runnable接口的方法
# 详解Java继承中属性、方法和对象的关系
# java用接口、多态、继承、类计算三角形和矩形周长及面积的方法
# 解析Java继承中方法的覆盖和重载
# java继承中的构造方法实例解析
# Java继承方法重写实现原理及解析
# 子类
# 而来
# 多个
# 这两个
# 来做
# 来实现
# 面向对象
# 有一个
# 是一个
# 也就是说
# 抽象类
# 又是
# 可以用
# 只需
# 是从
# 却没有
# 再来
# 是怎样
# 这种情况
# 要知道
相关文章:
如何选择靠谱的建站公司加盟品牌?
如何在橙子建站中快速调整背景颜色?
如何在云虚拟主机上快速搭建个人网站?
如何在阿里云虚拟主机上快速搭建个人网站?
如何通过VPS建站实现广告与增值服务盈利?
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
如何做网站制作流程,*游戏网站怎么搭建?
内网网站制作软件,内网的网站如何发布到外网?
如何快速登录WAP自助建站平台?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
如何基于云服务器快速搭建个人网站?
ppt制作免费网站有哪些,ppt模板免费下载网站?
如何快速生成ASP一键建站模板并优化安全性?
如何配置IIS站点权限与局域网访问?
再谈Python中的字符串与字符编码(推荐)
开封网站制作公司,网络用语开封是什么意思?
Android自定义listview布局实现上拉加载下拉刷新功能
如何在Windows虚拟主机上快速搭建网站?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
重庆网站制作公司哪家好,重庆中考招生办官方网站?
定制建站流程步骤详解:一站式方案设计与开发指南
名字制作网站免费,所有小说网站的名字?
建站主机如何选?性能与价格怎样平衡?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
如何在云指建站中生成FTP站点?
香港网站服务器数量如何影响SEO优化效果?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
建站之星免费模板:自助建站系统与智能响应式一键生成
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
重庆市网站制作公司,重庆招聘网站哪个好?
如何在IIS中新建站点并配置端口与物理路径?
网站制作公司排行榜,四大门户网站排名?
制作门户网站的参考文献在哪,小说网站怎么建立?
公众号网站制作网页,微信公众号怎么制作?
建站之星如何防范黑客攻击与数据泄露?
大连 网站制作,大连天途有线官网?
高防服务器租用如何选择配置与防御等级?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
网站制作公司,橙子建站是合法的吗?
安云自助建站系统如何快速提升SEO排名?
Android使用GridView实现日历的简单功能
如何在阿里云服务器自主搭建网站?
如何通过老薛主机一键快速建站?
如何设置并定期更换建站之星安全管理员密码?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
C++中引用和指针有什么区别?(代码说明)
详解jQuery中基本的动画方法
北京专业网站制作设计师招聘,北京白云观官方网站?
如何选择适配移动端的WAP自助建站平台?
*请认真填写需求信息,我们会在24小时内与您取得联系。