理解:继承可以理解为一个对象获取属性的过程。如果类A是类B的父类,而类B是类C的父类,我们也称C是A的子类,类C是从类A继承而来。     在java中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类。

关键字:extends和implements。

这两个关键字的使用决定了一个对象和另一个对象是否是IS-A(是一个)关系。

例:

// 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的子类。作为子类,B的实例拥有A所有的成员变量,但是对于private的成员B却没有访问权限,这保   证了A的封装性。

IS-A关系:一个对象是另一个对象的分类!我们通过使用instanceof 操作符,能够确定Mammal IS-A Animal。

class Animal{

}
class Dog extends Animal{ } class Cat extends Animal{ } class Pig extends Animal{ } public class AnimalTest{
public static void main(String args[]){
Dog dog=new Dog();
Cat cat=new Cat();
Pig pig=new Pig();
System.out.println(dog instanceof Animal);
System.out.println(cat instanceof Animal);
System.out.println(pig instanceof Animal);
}
}

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAT0AAABGCAIAAAAxa9R8AAACGElEQVR4nO3dMW7bMBiG4Zytp+jeodfpHbp06tatgw/gRfCkI+QW3QzB/BkLCCnoq59nCCIisp0AL0QwlP12u92u1+v7j+9vn3a5XO5ftyNxHl72Yb/Ff/Cn4yAzur37/GOWz1Ka9yxjH/lsT0qkgd0CB9Et5FnXdVkW3UIS3UIe3UIe3UIe3UKetlv/PISz0y3k2XZb7kDaHrbf3x+nPLT1B6bYeb19KLn8yafjwBjrui7Lrz3dPh3ULRxkUrfllBsYY/88+elg73oLDPbtd7fbh3Wm9tzeupR5MsxV7rso15PLGe92vHfW1NcPr8h+KcijW8ijW8ijW8ijW8ijW8jjfeEgj24hj24hT9utHU5wdrqFPNtuy63I7Q7kdjdy79D+ZJhi5/W2vN2nd9+P+4Fgrv3dPh3ULRxkUrfllBsY44DrLTDYB90+rDO15/bWpcyTYa5y30W5nlzOeLfjvbOmvn54RfZLQR7dQh7dQh7dQh7dQh7dQh7dQh7dQh7vCwd5dn4eH3AiuoU8227LrcjtDuR2N3Lv0P5kmGL/51a3t/v07vtxPxDMdcDnzesWBpvUbTnlBsY44HoLDPZBtw/rTO25vXUp82SY62+176JcTy5nvNvx3llTXz+8orJb4NR0C3m+fvm5LH90C0ncVwB5dAt5dAt5dAt5dAt5dAt5dAt5vC8c5NEt5NEt5NEt5NEt5NEtxPkH1esM3xAwss4AAAAASUVORK5CYII=" alt="" />

我们再来看下implements关键字是怎样使用来表示IS-A关系。

Implements关键字使用在类继承接口的情况下, 这种情况不能使用关键字extends

interface Animal{}

class Mammal implements Animal{}
class Dog implements Animal{} public class AnimalTestTwo {
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 Animal);
}
}

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFsAAAA5CAIAAADWaMCfAAAB+klEQVRoge2YsWrCQBjHfaFG7x2ciogd+ggVpGg7+AQtgnTo4iQ4uCjWdygoOogIIoJODjdIEAKBIM4dLGn6z2lEo0n0/xvEfNxdLj++7+642GazWa/XlmWZpmkYhq7rUsp2ux07mU6nY/86I2HnAkZsTh9T+RYlx494PiNRhUYQGkFoBKERhEYQGkE8jUTjWOUjNILsMaI8BTof3f/tYZWP5zu5+slxOQKOlC094yFFCCGEKLQs0+yX0891XZdSVoqPdoNdRjyDUTWyGX5mxEtrmyPdcipXPzBHPIPuQotG4Qjx+uWomu9SKlvz34hfs70EQ/c6Ussmk0m7gfLDPI0oF5o9fUPEgxBCiESi0Gzm4/G4puVqrhOacq9R5r8zvqvXWT/HB/7vNd1SSmHkttjuNYlCi0Z+UedIpRj0vILjN0cSmY/+n5H3p6R3z2vFkSP9cjquadrd/VuFVWNZltnMp8td9+57c/B+BKERhEYQ3hghNILwDg3hHRpytBHPII3sM6IswJBy+RwJO4cbgZXSPdSulfXaqiZ223doPLPSiBsaQWgEoRGERhAaQWgEoRGERpDZbDadTieTyXg8Ho1Gg8Gg1+tVq9Wg5xUchmGsVitd15fLpZRysVjM5/NGoxH0vIKDRhAaQWgEoRGERhAaQWgEoRGERoAfCczupPn/nykAAAAASUVORK5CYII=" alt="" />

Java只支持单继承(继承基本类和抽象类),但是我们可以用接口来实现(多继承接口来实现),脚本结构如:

public class Apple extends Fruit implements Fruit1, Fruit2{}
一般我们继承基本类和抽象类用extends关键字,实现接口类的继承用implements关键字。

JAVA类与对象(七)------继承的更多相关文章

  1. java类和对象之间的差

    java类和对象之间的差别是一个普遍的问题,刚开始学习java当它来到与类和对象接触.今天就来总结一下它们之间的差异. 先说说class和object差异.事实上,词:object是全部class的父 ...

  2. Javascript学习6 - 类、对象、继承

    原文:Javascript学习6 - 类.对象.继承 Javasciprt并不像C++一样支持真正的类,也不是用class关键字来定义类.Javascript定义类也是使用function关键字来完成 ...

  3. java类和对象

    类是对象的抽象 对象是类的一个实例类 对象 = new 类();拿对象可以操作这个类里的方法 java类与对象的区别是个老生常谈的问题,刚开始学java的时候就开始接触类和对象,今天来总结一下他们之间 ...

  4. 大数据学习day14-----第三阶段-----scala02------1. 元组 2.类、对象、继承、特质 3.函数(必须掌握)

    1. 元组 映射是K/V对偶的集合,对偶是元组的最简单的形式,元组可以装着多个不同类型的值 1.1 特点 元组相当于一个特殊的数组,其长度和内容都可变,并且数组中可以装任何类型的数据,其主要用处就是存 ...

  5. 类和对象:继承 - 零基础入门学习Python038

    类和对象:继承 让编程改变世界 Change the world by program 上节课的课后作业不知道大家完成的怎样?我们试图模拟一个场景,里边有一只乌龟和十条鱼,乌龟通过吃鱼来补充体力,当乌 ...

  6. Java类和对象初始化

    类的生命周期: Java类的初始化: 本阶段负责为类变量赋正确的初始值.(类变量即静态变量) Java编译器把所有的类变量初始化语句和静态初始化器通通收集到<clinit>方法中,该方法只 ...

  7. Java类是如何默认继承Object的

    前言 学过Java的人都知道,Object是所有类的父类.但是你有没有这样的疑问,我并没有写extends Object,它是怎么默认继承Object的呢? 那么今天我们就来看看像Java这种依赖于虚 ...

  8. 危险代码:如何使用Unsafe操作内存中的Java类和对象

    危险代码:如何使用Unsafe操作内存中的Java类和对象—Part1 危险代码:如何使用Unsafe操作内存中的Java类和对象—Part2 危险代码:如何使用Unsafe操作内存中的Java类和对 ...

  9. [Java初探08]__简单学习Java类和对象

    前言 在前面的学习中,我们对面向对象的编程思想有了一个基本的了解,并且简单的了解了类和对象的定义.那么类和对象在Java语言中是如何表现的,这次,就从实际出发,学习一下一下类和对象在Java语言中的使 ...

随机推荐

  1. windows live writer向cnblog发布文章设置(转)

    Windows Live Writer是非常不错的一个日志发布工具,支持本地写文章,非常方便将word 中内容,包括图片进行处理,有点感觉相见恨晚. Live Writer最新版本下载地址是什么? h ...

  2. MITM to crack Https connections

    Everybody knows that https is http over SSL, and https is a secure way for protecting confidential d ...

  3. XSS测试语句大全

    '><script>alert(document.cookie)</script> ='><script>alert(document.cookie)& ...

  4. Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy   Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...

  5. C++利用注册表添加桌面右键新建菜单

    对于程序员来说,新建一个cpp文件是再频繁不过的事情了. 为了方便,我们习惯在桌面右键新建文件,而不是新建一个文本文档,然后修改后缀名. 百度谷歌查询了一下,终于知道如何添加注册表. 手痒,抽出时间用 ...

  6. Jquery入门之---------基本事件------------

    Javascript有一个非常重要的功能,就是事件驱动. 当页面完成加载后,用户通过鼠标或键盘触发页面中绑定事件的元素即可触发.Jquery为开发者更有效率的编写事件行为,封装了大量有益的事件方法供我 ...

  7. 使用JavaScript获取Request中参数的值

    本人很少写博客,有不正确的地方还希望大家多多指导. 假设现在有一个URL,如下. http://www.jacky.com/?id=1101&name=jacky 如何通过JS访问到id和na ...

  8. Windows程序设计之Hello,Windows 98程序的声音调试记录

    最近在Window程序设计第五版,刚看到第三章,第三章中有一个程序调用了一个多媒体对象库winmm.lib库,由于该库不再默认项目中,如果不手动添加,编译时会提示错误而无法运行,但是书上用的是Visu ...

  9. WIN10 64位下VS2015 MFC直接添加 halcon 12的CPP文件实现视觉检测

    近段时间开始接触halcon,但是在VS2015里面使用,无论是配置还是生产EXE文件,都不如意. 加上网上的教程很多,经过多次测试,其实有很多地方无需修改,如果修改的太多也失去了直接添加封装的意义. ...

  10. How to move the user document folder to D disk[Windows 7]

    when you install windows 7 OS, the system ask for you enter username and password, then you have not ...