1. 继承

1.1 继承概述

但是我们将相同的类提取出来就会变成这个样子

让他们之间产生一个继承的关系

1.2 继承的好处和弊端

IS-A、HAS-A和USE-A关系

苹果是水果的一种可以使用继承
猫是动物的一种可以使用继承
猫和狗不具备继承关系,不可以使用继承

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的更多相关文章

  1. 第二十八节:Java基础-进阶继承,抽象类,接口

    前言 Java基础-进阶继承,抽象类,接口 进阶继承 class Stu { int age = 1; } class Stuo extends Stu { int agee = 2; } class ...

  2. Java基础学习-- 继承 的简单总结

    代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...

  3. Java基础(00)

    Java发展史 Java之父:詹姆斯.高斯林(James Gosling). SUN(Stanford University Network 斯坦福大学网络公司)产物. 1995年5月23日,java ...

  4. java基础之继承(一)

    虽然说java中的面向对象的概念不多,但是具体的细节还是值得大家学习研究,java中的继承实际上就是子类拥有父类所有的内容(除私有信息外),并对其进行扩展.下面是我的笔记,主要包含以下一些内容点: 构 ...

  5. 【Java基础】继承的一些总结

    什么是继承 把一些类的具有共性的东西剥离出来形成一个新的类,然后各个其他类保留自己独有的特性,并用关键字extends继承这个剥离出来的新的类,可以最终达到各类原始相同效果,但是在每个类中,单用一个“ ...

  6. Java基础08 继承

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 继承(inheritance)是面向对象的重要概念.继承是除组合(composit ...

  7. Java基础08 继承(转载)

    继承(inheritance)是面向对象的重要概念.继承是除组合(composition)之外,提高代码重复可用性(reusibility)的另一种重要方式.组合是重复调用对象的功能接口.继承可以重复 ...

  8. java基础(10):继承、抽象类

    1. 继承 1.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系.例如公司中的研发部员工和维护部员工 ...

  9. Java基础 之三 继承

    1.子类 1) 定义子类 //假设父类(也叫做超类)是Employee类,用extends来表示继承 public class Manager extends Employee{ //域和方法 pri ...

  10. Java基础进阶:继承重点摘要,继承详解,方法重写注意事项,方法重载与重写的区别,抽象类,代码块, 附重难点,代码实现源码,课堂笔记,课后扩展及答案

    继承重点摘要 *继承的特点: 子类在初始化之前,一定要先完成父类数据的初始化 子类在初始化之前,一定要先访问父类构造,完成父类数据的初始化 系统在每一个构造方法中默认隐藏了一句super(); 如果我 ...

随机推荐

  1. 如何去掉a标签的下划线

    首先来了解下<a>标签的一些样式: <a>标签的伪类样式 一组专门的预定义的类称为伪类,主要用来处理超链接的状态.超链接文字的状态可以通过伪类选择符+样式规则来控制.伪类选择符 ...

  2. TVM如何训练TinyML

    TVM如何训练TinyML 机器学习研究人员和从业人员对"裸机"(低功耗,通常没有操作系统)设备产生了广泛的兴趣.尽管专家已经有可能在某些裸机设备上运行某些模型,但是为各种设备优化 ...

  3. 编译原理-确定有穷自动机(deterministic finite automata ,DFA)

    是一个五元组 M=(S,∑,f,S0,F) 其中 S:有穷状态集 ∑:输入字母表(有穷) f:状态转换函数.f(S,a)=S' 是单值部分映射,每个状态面临一个输入符号时,转入的后继状态是确定的. S ...

  4. fiddler选项卡-Statistc(统计)

    Statistc Statistc是fiddler用来对session列表里的Session相关情况的统计,利用这个选项,可以对请求进行性能以及其他数据分析 1.界面 2.参数详解 建议:打开fidd ...

  5. Java 将PPT幻灯片转为HTML

    本文以Java程序代码为例展示如何通过格式转换的方式将PPT幻灯片文档转为HTML文件.这里的PPT幻灯片可以是.ppt/.pptx/.pps/.ppsx/.potx等格式. 代码实现思路:[加载PP ...

  6. 阿里面试挂了,就因为面试官说我Spring 事务管理(器)不熟练?

    前言 事务管理,一个被说烂的也被看烂的话题,还是八股文中的基础股之一.但除了八股文中需要熟读并背诵的那些个传播行为之外,背后的"为什么"和核心原理更为重要. ​ 写这篇文章之前,我 ...

  7. HTML——超链接<a>

    一.超链接的一般格式: <a href="路径" target="目标窗口的位置">链接文本或图像<a/> 1.常用参数说明: href ...

  8. 「题解」CF1468M Similar Sets

    本文将同步发布于: 洛谷博客: csdn: 博客园: 简书. 题目 题目链接:洛谷.CF1468M. 题意简述 给定 \(n\) 个集合 \(S_{1\sim n}\),问是否存在 \(i,j\) 满 ...

  9. Centos7 安装 Zabbix Server 4.0

    官方参考URL:https://www.zabbix.com/documentation/4.0/start 1. 安装 Apache 2.4(略) 注意系统时间/时区ntp server是否定时同步 ...

  10. WordPress安装篇(5):源码编译安装LNMP并部署WordPress

    与YUM方式安装相比,源码编译安装方式更灵活,安装过程中能自定义功能和参数,特别是在批量部署服务器又要求软件版本及配置一致时,源码编译安装的优势很明显.本文介绍如何通过源码编译方式安装Nginx1.1 ...