【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的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码的类加载机制似乎 ...
随机推荐
- SU suphasevel命令学习
- 三角形[HDU2039]
三角形 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- BZOJ3784 : 树上的路径
树的点分治,在分治的时候将所有点到根的距离依次放入一个数组q中. 对于一棵子树里的点,合法的路径一定是q[L]..q[R]的某个数加上自己到重心的距离. 定义五元组(v,l,m,r,w),表示当前路径 ...
- [BZOJ 4436][Cerc2015]Kernel Knights
[Cerc2015]Kernel Knights Time Limit: 2 Sec Memory Limit: 512 MBSubmit: 5 Solved: 4[Submit][Status][D ...
- TJOI2016 && HEOI2016 解题报告
好吧我来写一波题解骗访问量QAQ 题目可以在cogs提交 bzoj4551~4456 D1T1 tree 树剖可做,然而有更简单的做法,10min搞定 维护一个并查集,时光倒流,如果当前点没有标记就把 ...
- Ubuntu(Linux) 下 unzip 命令使用详解
1.功能作用:解压缩zip文件 2.位置:/usr/bin/unzip 3.格式用法:unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist ...
- shell函数
1. 定义 : func() { } 或 function func() { } 2.参数 func 1 2 3 4 可在函数中直接调$1来使用,>=10的用${n}
- 初识python面向对象
一.初识python面向对象: class Person: #使用class关键字定义一个类 age=0 #类变量(静态变量) def eat(self,food): #定义一个方法 self.age ...
- 用特征来实现混入(mix-in)式的多重继承
用特征来实现混入(mix-in)式的多重继承 Scala里相当于Java接口的是特征(Trait).Trait的英文意思是特质和性状(本文称其为特征),实际上他比接口还功能强大.与接口不同的是,它还可 ...
- ArcEngine开发:IElement.Geometry 值不在预期范围内 + 元素绘制代码
IElement pEle = pLineEle as IElement; pEle.Geometry = pLn; pLn为一个ILine对象,想当然的以为它是IGeometry对象,可以赋值,结果 ...