理解:继承可以理解为一个对象获取属性的过程。如果类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. Spring与Quartz的整合实现定时任务调度

    摘自: http://kevin19900306.iteye.com/blog/1397744 最近在研究Spring中的定时任务功能,最好的办法当然是使用Quartz来实现.对于一个新手来说,花了我 ...

  2. leetcode 13

    罗马数字是阿拉伯数字传入之前使用的一种数码.罗马数字采用七个罗马字母作数字.即Ⅰ(1).X(10).C(100).M(1000).V(5).L(50).D(500). 记数的方法: 相同的数字连写,所 ...

  3. jquery resize事件增强版

    /* * jQuery resize event - v1.1 - 3/14/2010 * http://benalman.com/projects/jquery-resize-plugin/ * * ...

  4. javaSE第十二天

    第十二天    64 1. Scanner的使用(了解)    64 (1)在JDK5以后出现的用于键盘录入数据的类.    64 (2)构造方法:    64 (4)要掌握的两个方法    65 ( ...

  5. Ubuntu14.04进入文本模式方法

    ubuntu 10.10以前的操作方法: 1 第一步,具体命令及操作如下: sudo vi /etc/init/rc-sysinit.conf env DEFAULT_RUNLEVEL=3 <- ...

  6. C#局域网桌面共享软件制作(三)

    到周末了,继续做这个桌面共享软件,下面是前两篇的链接, 链接 C#局域网桌面共享软件制作(一) 链接 C#局域网桌面共享软件制作(二) 通过对图片进行压缩以后,每张图片大小38K左右(win7/102 ...

  7. WebClient模拟发送Post请求

    WebClient模拟发送Post请求方法: /// <summary> /// 模拟post请求 /// </summary> /// <param name=&quo ...

  8. 一些peoplecode小技巧平【二】

    1. Set component changed page field property: For understanding this open a page in application desi ...

  9. 将List<T>转化成 DataTable--调整可空类型的转化错误

    加载表结构并保持成XML string cmdText = @"select * from kb_lable_temp where 1=2"; using (SqlConnecti ...

  10. GoldenGate中使用FILTER,COMPUTE 和SQLEXEC命令

    本文主要介绍OGG中一些过滤或计算函数的用法,以及sqlexec的基本用法 SQLPREDICATE 在使用OGG初始化时,可以添加此参数到extract中,用于选择符合条件的记录,下面是OGG官方文 ...