【Java 基础篇】【第九课】继承
继承就是为了提高代码的复用率。
我们用extends关键字表示继承:
class Human
{
/*因为类中显式的声明了一个带参数构造器,所以默认的构造器就不存在了,但是你在子类的构造器中并没有显式
* 的调用父类的构造器(创建子类对象的时候,一定会去调用父类的构造器,这个不用问为什么),没有显式调用
* 的话,虚拟机就会默认调用父类的默认构造器,但是此时你的父类的默认构造器已经不存在了,这也就是为什么父
* 类中必须保留默认构造器的原因。
* PS.应该养成良好的编程习惯,任何我们自己定义的类,都显式的加上默认的构造器,以后更深入的学习之后,
* 会发现有很多好处
*/
public Human()
{
}
public Human(int h)
{
System.out.println("human construction");
this.height = h;
} public int getHeight()
{
return this.height;
} public void growHeight(int h)
{
this.height = this.height + h;
} public void breath()
{
System.out.println("hu.....hu.....");
} private int height;
} class Woman extends Human
{
public Human giveBirth()
{
System.out.println("Give birth");
return (new Human(20));
}
} public class test
{
public static void main(String[] args)
{
Woman girl = new Woman();
girl.breath();
girl.growHeight(100);
System.out.println(girl.getHeight()); Human baby = girl.giveBirth();
System.out.println(baby.getHeight());
baby.growHeight(12);
System.out.println(baby.getHeight());
} }
输出:
hu.....hu.....
100
Give birth
human construction
20
32
需要注意 的地方:
1.子类中要是要调用基类的成员变量的话,成员变量必须是 protected 或者是 public;
2.子类中可以使用super关键字来指代基类对象,使用super() 相当于调用基类的构造函数,super.成员也可以访问。
看代码吧:
class Human
{ public Human(int h)
{
System.out.println("human construction");
this.height = h;
} public int getHeight()
{
return this.height;
} public void growHeight(int h)
{
this.height = this.height + h;
} public void breath()
{
System.out.println("hu.....hu.....");
} protected int height;
} class Woman extends Human
{
public Woman(int h)
{
super(h);
System.out.println("Woman construction");
} public Human giveBirth()
{
System.out.println("Give birth");
return (new Human(20));
}
} public class test
{
public static void main(String[] args)
{
Woman girl = new Woman(20);
girl.breath();
girl.growHeight(100);
System.out.println(girl.getHeight()); Human baby = girl.giveBirth();
System.out.println(baby.getHeight());
baby.growHeight(12);
System.out.println(baby.getHeight());
} }
输出结果:
human construction
Woman construction
hu.....hu.....
120
Give birth
human construction
20
32
【Java 基础篇】【第九课】继承的更多相关文章
- java基础篇---I/O技术
java基础篇---I/O技术 对于任何程序设计语言而言,输入输出(I/O)系统都是比较复杂的而且还是比较核心的.在java.io.包中提供了相关的API. java中流的概念划分 流的方向: 输 ...
- 金三银四跳槽季,BAT美团滴滴java面试大纲(带答案版)之一:Java基础篇
Java基础篇: 题记:本系列文章,会尽量模拟面试现场对话情景, 用口语而非书面语 ,采用问答形式来展现.另外每一个问题都附上“延伸”,这部分内容是帮助小伙伴们更深的理解一些底层细节的补充,在面试中可 ...
- 小白—职场之Java基础篇
java基础篇 java基础 目录 1.java是一种什么语言,jdk,jre,jvm三者的区别 2.java 1.5之后的三大版本 3.java跨平台及其原理 4.java 语言的特点 5.什么是字 ...
- Java基础篇(JVM)——类加载机制
这是Java基础篇(JVM)的第二篇文章,紧接着上一篇字节码详解,这篇我们来详解Java的类加载机制,也就是如何把字节码代表的类信息加载进入内存中. 我们知道,不管是根据类新建对象,还是直接使用类变量 ...
- java基础篇---HTTP协议
java基础篇---HTTP协议 HTTP协议一直是自己的薄弱点,也没抽太多时间去看这方面的内容,今天兴致来了就在网上搜了下关于http协议,发现有园友写了一篇非常好的博文,博文地址:(http: ...
- java基础篇---I/O技术(三)
接上一篇java基础篇---I/O技术(二) Java对象的序列化和反序列化 什么叫对象的序列化和反序列化 要想完成对象的输入或输出,还必须依靠对象输出流(ObjectOutputStream)和对象 ...
- Java基础篇 - 强引用、弱引用、软引用和虚引用
Java基础篇 - 强引用.弱引用.软引用和虚引用 原创零壹技术栈 最后发布于2018-09-09 08:58:21 阅读数 4936 收藏展开前言Java执行GC判断对象是否存活有两种方式其中一种是 ...
- java基础篇 之 构造器内部的多态行为
java基础篇 之 构造器内部的多态行为 我们来看下下面这段代码: public class Main { public static void main(String[] args) { new ...
- java基础篇1
JAVA基础篇1 注释 单行注释 //这是一个单行注释,由两个斜杠组成,不能嵌套多行注释 多行注释 /*这是一个 多行注释 ,//里面不能嵌套多行注释, 但是可以嵌套单行注释*/ 文档注释 /**ja ...
- Java基础篇(JVM)——字节码详解
这是Java基础篇(JVM)的第一篇文章,本来想先说说Java类加载机制的,后来想想,JVM的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码的类加载机制似乎 ...
随机推荐
- 如何选中一个Checkbox,设置无效?
document.all.cb1[0].disabled = true;
- BZOJ4340 : BJOI2015 隐身术
枚举$B$串的每个后缀,统计出该后缀所有满足条件的前缀. 考虑暴力搜索,设状态$(x,y,z)$表示当前需要考虑$A$从$x$开始的后缀,$B$从$y$开始的后缀,之前部分编辑距离为$z$. 那么首先 ...
- BZOJ4311 : 向量
考虑离线操作,求出每个向量存在的时间区间,用时间线段树来进行分治,在每个节点求出凸壳后,询问时在凸壳上三分答案.时间复杂度$O(n\log^2n)$. #include<cstdio> # ...
- BZOJ4296 : [PA2015]Mistrzostwa
先不断将度数小于D的点都删去,再找到剩下的图里最大的连通块即可. #include<cstdio> #include<algorithm> #define N 200010 i ...
- ios clang: error: linker command failed with exit code 1 (use -v to see invocation)解决方法
当xcode编译时出现这个错误,一般是你的编译源码中存在重复的源码 解决方法:"Build Phases" -> "Compile Sources" 去删 ...
- FFmpeg - 音频解码过程
1. 注册所有解码器 av_register_all(); 2. Codec & CodecContext AVCodec* codec = avcodec_find_decoder(CODE ...
- MatLab 组件大全
MATLAB 矩阵实验室 7.0.1 Simulink ...
- HDU 1257 最少拦截系统(Dilworth定理+LIS)
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- Twitter Storm中Bolt消息传递路径之源码解读
本文初次发表于storm-cn的google groups中,现以blog的方式再次发表,表明本人徽沪一郎确实读过这些代码,:). Bolt作为task被executor执行,而executor是一个 ...
- JavaScript 页面跳转的几种方式 转
第一种: <script language="JavaScript" type="text/javascript"> wi ...