Java基础00-继承17
1. 继承
1.1 继承概述
但是我们将相同的类提取出来就会变成这个样子
让他们之间产生一个继承的关系
1.2 继承的好处和弊端
苹果是水果的一种可以使用继承
猫是动物的一种可以使用继承
猫和狗不具备继承关系,不可以使用继承
1.3 继承中遍变量的访问特点
1.4 super
1.5 继承中构造构造方法的访问特点
子类中所有的构造方法默认都会访问父类中无参的构造方法。
每一个子类构造方法的第一条语句默认都是super()。
1.6 继承中成员方法的访问特点
1.7 super内存图
main方法加载到栈内存
Zi z 加载到main方法中
在堆内存中new一片空间,加载成员变量,Zi z指向001。
将Zi方法加载到栈内存中,然后执行Zi的构造方法,但是执行子类构造方法的时候默认方法中是带super()方法的,所以要先访问父类的构造方法。
父类,先将父类的成员变量(它是子类的父类所以它的地址也是001)加载到堆内存空间,然后将父类的构造方法加载到栈内存,执行构造方法,输出,执行完毕后从栈内存消失。
父类的构造方法访问完毕后,接着访问子类的构造方法,输出,然后在栈内存中消失。
接着是z.show(),调用show()方法,在栈内存中加载show,调用者是z(001),this就是z(001)
int age = 30;.,在栈内存加载。
直接输出age
这次输出的是this.age,而this的地址值是001,所以输出的是20
super.age,同过调用者找到super(父类),从super(父类)找到age,所以输出40。show方法执行完毕从扎内存消失。
接着调用method();方法,但是在子类中并没有。
子类没有method方法,所以我们到父类中找,父类中有method()方法最所以我们调用父类的method方法。
所以执行的是父类的method方法,输出完毕后在栈内存中消失。
1.8 方法重写
方法形参不变,返回值类型可不同(<=小于父类)
1.9 方法重写注意事项
private、final修饰的方法不能被重写。
1.10 Java中继承的注意事项
1.11 案例
1.11.1 老师和学生
public class Person {
public String name;
public int age; public Person(){
System.out.println("父类的构造方法被调用");
}
}
public class Student extends Person{
public Student(){
super();
System.out.println("Student的构造方法被调用");
}
public void study(){
System.out.println("好好学习");
}
}
public class Teacher extends Person{
public Teacher(){
super();
System.out.println("Teacher的构造方法被调用");
} public void teach(){
System.out.println("好好教书");
}
}
public class TestTeaStu {
public static void main(String[] args) {
Teacher t = new Teacher();//父类的构造方法被调用
//Teacher的构造方法被调用
Student s = new Student();//父类的构造方法被调用
//Student的构造方法被调用
t.teach();//好好教书
s.study();//好好学习
}
}
1.11.2 猫和狗
public class Animals {
private String name;
private int age; public Animals(){
System.out.println("Animals类的无参构造方法被调用");
} public Animals(String name,int age){
System.out.println("Animals类的有参构造方法被调用");
} public String getName(){
return name;
} public void setName(String name){
this.name = name;
} public int getAge(){
return age;
} public void setAge(int age){
this.age = age;
}
}
public class Cat extends Animals {
public Cat(){
super();
System.out.println("Cat类的无参构造方法被调用");
} public Cat(String name,int age){
super(name,age);
System.out.println("Cat类的有参构造方法被调用");
} public void getMouse(){
System.out.println("猫抓老鼠");
} public String toString(){
return "猫的字符串";
}
}
public class Dog extends Animals {
public Dog(){
super();
System.out.println("Dog类的无参构造方法被调用");
} public Dog(String name,int age){
super(name,age);
System.out.println("Dog类的有参构造方法被调用");
} public void lookGuard(){
System.out.println("狗看门");
}
}
public class AnimalDemo{
public static void main(String[] args) {
//输出:Animals类的无参构造方法被调用 Cat类的无参构造方法被调用
Cat c = new Cat();
//Animals类的有参构造方法被调用
//Dog类的有参构造方法被调用
//输出:Animals类的有参构造方法被调用 Dog类的有参构造方法被调用
Dog d = new Dog("ag",13);
c.getMouse();//输出:猫抓老鼠
d.lookGuard();//输出:狗看门
}
}
Java基础00-继承17的更多相关文章
- 第二十八节:Java基础-进阶继承,抽象类,接口
前言 Java基础-进阶继承,抽象类,接口 进阶继承 class Stu { int age = 1; } class Stuo extends Stu { int agee = 2; } class ...
- Java基础学习-- 继承 的简单总结
代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...
- Java基础(00)
Java发展史 Java之父:詹姆斯.高斯林(James Gosling). SUN(Stanford University Network 斯坦福大学网络公司)产物. 1995年5月23日,java ...
- java基础之继承(一)
虽然说java中的面向对象的概念不多,但是具体的细节还是值得大家学习研究,java中的继承实际上就是子类拥有父类所有的内容(除私有信息外),并对其进行扩展.下面是我的笔记,主要包含以下一些内容点: 构 ...
- 【Java基础】继承的一些总结
什么是继承 把一些类的具有共性的东西剥离出来形成一个新的类,然后各个其他类保留自己独有的特性,并用关键字extends继承这个剥离出来的新的类,可以最终达到各类原始相同效果,但是在每个类中,单用一个“ ...
- Java基础08 继承
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 继承(inheritance)是面向对象的重要概念.继承是除组合(composit ...
- Java基础08 继承(转载)
继承(inheritance)是面向对象的重要概念.继承是除组合(composition)之外,提高代码重复可用性(reusibility)的另一种重要方式.组合是重复调用对象的功能接口.继承可以重复 ...
- java基础(10):继承、抽象类
1. 继承 1.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系.例如公司中的研发部员工和维护部员工 ...
- Java基础 之三 继承
1.子类 1) 定义子类 //假设父类(也叫做超类)是Employee类,用extends来表示继承 public class Manager extends Employee{ //域和方法 pri ...
- Java基础进阶:继承重点摘要,继承详解,方法重写注意事项,方法重载与重写的区别,抽象类,代码块, 附重难点,代码实现源码,课堂笔记,课后扩展及答案
继承重点摘要 *继承的特点: 子类在初始化之前,一定要先完成父类数据的初始化 子类在初始化之前,一定要先访问父类构造,完成父类数据的初始化 系统在每一个构造方法中默认隐藏了一句super(); 如果我 ...
随机推荐
- 如何去掉a标签的下划线
首先来了解下<a>标签的一些样式: <a>标签的伪类样式 一组专门的预定义的类称为伪类,主要用来处理超链接的状态.超链接文字的状态可以通过伪类选择符+样式规则来控制.伪类选择符 ...
- TVM如何训练TinyML
TVM如何训练TinyML 机器学习研究人员和从业人员对"裸机"(低功耗,通常没有操作系统)设备产生了广泛的兴趣.尽管专家已经有可能在某些裸机设备上运行某些模型,但是为各种设备优化 ...
- 编译原理-确定有穷自动机(deterministic finite automata ,DFA)
是一个五元组 M=(S,∑,f,S0,F) 其中 S:有穷状态集 ∑:输入字母表(有穷) f:状态转换函数.f(S,a)=S' 是单值部分映射,每个状态面临一个输入符号时,转入的后继状态是确定的. S ...
- fiddler选项卡-Statistc(统计)
Statistc Statistc是fiddler用来对session列表里的Session相关情况的统计,利用这个选项,可以对请求进行性能以及其他数据分析 1.界面 2.参数详解 建议:打开fidd ...
- Java 将PPT幻灯片转为HTML
本文以Java程序代码为例展示如何通过格式转换的方式将PPT幻灯片文档转为HTML文件.这里的PPT幻灯片可以是.ppt/.pptx/.pps/.ppsx/.potx等格式. 代码实现思路:[加载PP ...
- 阿里面试挂了,就因为面试官说我Spring 事务管理(器)不熟练?
前言 事务管理,一个被说烂的也被看烂的话题,还是八股文中的基础股之一.但除了八股文中需要熟读并背诵的那些个传播行为之外,背后的"为什么"和核心原理更为重要. 写这篇文章之前,我 ...
- HTML——超链接<a>
一.超链接的一般格式: <a href="路径" target="目标窗口的位置">链接文本或图像<a/> 1.常用参数说明: href ...
- 「题解」CF1468M Similar Sets
本文将同步发布于: 洛谷博客: csdn: 博客园: 简书. 题目 题目链接:洛谷.CF1468M. 题意简述 给定 \(n\) 个集合 \(S_{1\sim n}\),问是否存在 \(i,j\) 满 ...
- Centos7 安装 Zabbix Server 4.0
官方参考URL:https://www.zabbix.com/documentation/4.0/start 1. 安装 Apache 2.4(略) 注意系统时间/时区ntp server是否定时同步 ...
- WordPress安装篇(5):源码编译安装LNMP并部署WordPress
与YUM方式安装相比,源码编译安装方式更灵活,安装过程中能自定义功能和参数,特别是在批量部署服务器又要求软件版本及配置一致时,源码编译安装的优势很明显.本文介绍如何通过源码编译方式安装Nginx1.1 ...