JAVA类与对象(七)------继承
理解:继承可以理解为一个对象获取属性的过程。如果类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类与对象(七)------继承的更多相关文章
- java类和对象之间的差
java类和对象之间的差别是一个普遍的问题,刚开始学习java当它来到与类和对象接触.今天就来总结一下它们之间的差异. 先说说class和object差异.事实上,词:object是全部class的父 ...
- Javascript学习6 - 类、对象、继承
原文:Javascript学习6 - 类.对象.继承 Javasciprt并不像C++一样支持真正的类,也不是用class关键字来定义类.Javascript定义类也是使用function关键字来完成 ...
- java类和对象
类是对象的抽象 对象是类的一个实例类 对象 = new 类();拿对象可以操作这个类里的方法 java类与对象的区别是个老生常谈的问题,刚开始学java的时候就开始接触类和对象,今天来总结一下他们之间 ...
- 大数据学习day14-----第三阶段-----scala02------1. 元组 2.类、对象、继承、特质 3.函数(必须掌握)
1. 元组 映射是K/V对偶的集合,对偶是元组的最简单的形式,元组可以装着多个不同类型的值 1.1 特点 元组相当于一个特殊的数组,其长度和内容都可变,并且数组中可以装任何类型的数据,其主要用处就是存 ...
- 类和对象:继承 - 零基础入门学习Python038
类和对象:继承 让编程改变世界 Change the world by program 上节课的课后作业不知道大家完成的怎样?我们试图模拟一个场景,里边有一只乌龟和十条鱼,乌龟通过吃鱼来补充体力,当乌 ...
- Java类和对象初始化
类的生命周期: Java类的初始化: 本阶段负责为类变量赋正确的初始值.(类变量即静态变量) Java编译器把所有的类变量初始化语句和静态初始化器通通收集到<clinit>方法中,该方法只 ...
- Java类是如何默认继承Object的
前言 学过Java的人都知道,Object是所有类的父类.但是你有没有这样的疑问,我并没有写extends Object,它是怎么默认继承Object的呢? 那么今天我们就来看看像Java这种依赖于虚 ...
- 危险代码:如何使用Unsafe操作内存中的Java类和对象
危险代码:如何使用Unsafe操作内存中的Java类和对象—Part1 危险代码:如何使用Unsafe操作内存中的Java类和对象—Part2 危险代码:如何使用Unsafe操作内存中的Java类和对 ...
- [Java初探08]__简单学习Java类和对象
前言 在前面的学习中,我们对面向对象的编程思想有了一个基本的了解,并且简单的了解了类和对象的定义.那么类和对象在Java语言中是如何表现的,这次,就从实际出发,学习一下一下类和对象在Java语言中的使 ...
随机推荐
- windows live writer向cnblog发布文章设置(转)
Windows Live Writer是非常不错的一个日志发布工具,支持本地写文章,非常方便将word 中内容,包括图片进行处理,有点感觉相见恨晚. Live Writer最新版本下载地址是什么? h ...
- MITM to crack Https connections
Everybody knows that https is http over SSL, and https is a secure way for protecting confidential d ...
- XSS测试语句大全
'><script>alert(document.cookie)</script> ='><script>alert(document.cookie)& ...
- Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...
- C++利用注册表添加桌面右键新建菜单
对于程序员来说,新建一个cpp文件是再频繁不过的事情了. 为了方便,我们习惯在桌面右键新建文件,而不是新建一个文本文档,然后修改后缀名. 百度谷歌查询了一下,终于知道如何添加注册表. 手痒,抽出时间用 ...
- Jquery入门之---------基本事件------------
Javascript有一个非常重要的功能,就是事件驱动. 当页面完成加载后,用户通过鼠标或键盘触发页面中绑定事件的元素即可触发.Jquery为开发者更有效率的编写事件行为,封装了大量有益的事件方法供我 ...
- 使用JavaScript获取Request中参数的值
本人很少写博客,有不正确的地方还希望大家多多指导. 假设现在有一个URL,如下. http://www.jacky.com/?id=1101&name=jacky 如何通过JS访问到id和na ...
- Windows程序设计之Hello,Windows 98程序的声音调试记录
最近在Window程序设计第五版,刚看到第三章,第三章中有一个程序调用了一个多媒体对象库winmm.lib库,由于该库不再默认项目中,如果不手动添加,编译时会提示错误而无法运行,但是书上用的是Visu ...
- WIN10 64位下VS2015 MFC直接添加 halcon 12的CPP文件实现视觉检测
近段时间开始接触halcon,但是在VS2015里面使用,无论是配置还是生产EXE文件,都不如意. 加上网上的教程很多,经过多次测试,其实有很多地方无需修改,如果修改的太多也失去了直接添加封装的意义. ...
- 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 ...