理解:继承可以理解为一个对象获取属性的过程。如果类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. 入门学习PHP之变量_1

    1.函数里只能访问局部变量,不能访问全局变量,如果函数里需要访问全局变量则需要在变量前加global作用域,如下实例: <?php $x=5; $y=10; function myTest() ...

  2. ASP.NET的SEO:正则表达式

    目前国内主流的网站内容管理系统中,有大部分是可以将动态的PHP.ASP.ASPX等文档直接生成HTML的.但是由于有些网站的内容较多,因此如果单纯的采取直接生成的方式,将会占用大量的服务器资源.在这种 ...

  3. IT职场求生法则(转)

    摘要:在IT职场打滚超过10年了,从小小的程序员做到常务副总.相对于其它行业,IT职场应该算比较光明的了,但也陷阱重重,本文说说我的亲身体会,希望大家能在IT职场上战无不胜! 作者:张传波 软件知识大 ...

  4. Gestures_Article_4_0

    Technical Article Windows Phone 7™ Gestures Compared Lab version: 1.0.0 Last updated: August 25, 201 ...

  5. plsql 登录后,提示数据库字符集(AL32UTF8)和客户端字符集(ZHS16GBK)不一致

    plsql 登录后,提示数据库字符集(AL32UTF8)和客户端字符集(ZHS16GBK)不一致 (2014-07-25 18:40:34)转载▼ 标签: it 分类: Database Databa ...

  6. .NET验证码控件(美观 易用)

    新建一般处理程序:veify.ashx <%@ WebHandler Language="C#" Class="verify" %> using S ...

  7. 设计模式-外观模式(Facade)

    简介 外观模式(Facade),将外部与内部子系统的通信通过一个统一的门面对象进行. 由两部分组成: 门面角色:供外部调用,内部可能组装了多个子系统,多个方法. 子系统角色:子系统的方法也可以直接供外 ...

  8. Linux rename命令

    转载:http://blog.csdn.net/sea_shore/article/details/6102437 1.rename命令批量修改文件名, 其实linux下可以使用别的办法来批量修改文件 ...

  9. PeopleCode 处理压缩文件

     PeopleSoft中对文件附件的处理都是单个文件处理的,虽然在8.52版本新增了MAddAttachment(URLDestination, DirAndFilePrefix, Prompts, ...

  10. select @@IDENTITY

    用select @@identity得到最新一次插入记录时自动产生的ID 如果你使用存储过程的话,将非常简单,代码如下:SET @NewID=@@IDENTITY 说明: 在一条 INSERT.SEL ...