1.继承的概述

=========================================================================================================================

2.继承的格式

=======================================================================================================================

3.继承中成员变量的访问特点

Fu.java

package cn.itcast.day09.demo02;

public class Fu {

int numFu = 10;

int num = 100;

public void methodFu() {
// 使用的是本类当中的,不会向下找子类的
System.out.println(num);
}

}

======================================================================

Zi.java

package cn.itcast.day09.demo02;

public class Zi extends Fu {

int numZi = 20;

int num = 200;

public void methodZi() {
// 因为本类当中有num,所以这里用的是本类的num
System.out.println(num);
}

}

=============================================================================

Demo01ExtendsField.java

package cn.itcast.day09.demo02;

/*
在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问有两种方式:

直接通过子类对象访问成员变量:等号左边是谁,就优先用谁,没有则向上找。

间接通过成员方法访问成员变量:该方法属于谁,就优先用谁,没有则向上找。
*/
public class Demo01ExtendsField {

public static void main(String[] args) {
Fu fu = new Fu(); // 创建父类对象
System.out.println(fu.numFu); // 只能使用父类的东西,没有任何子类内容
System.out.println("===========");

Zi zi = new Zi();

System.out.println(zi.numFu); // 10
System.out.println(zi.numZi); // 20
System.out.println("===========");

// 等号左边是谁,就优先用谁
System.out.println(zi.num); // 优先子类,200
// System.out.println(zi.abc); // 到处都没有,编译报错!
System.out.println("===========");

// 这个方法是子类的,优先用子类的,没有再向上找
zi.methodZi(); // 200
// 这个方法是在父类当中定义的,
zi.methodFu(); // 100
}

}

====================================================================================

4.区分子类方法中重名的三种

父类中成员变量int num=10;

子类中成员变量int num=20;

子类方法中局部变量 int  num=30;

========================================================================================

5.继承中成员方法的访问特点.

================================================================================================================

6.继承中方法的覆盖重写_概念

=====================================================================================================================

7.继承中方法的覆盖重写_注意事项

注意:@Override关键字一定要写上,可以有效防止方法正确覆盖重写

========================================================================================================

8.继承中方法的覆盖重写_应用

==========================================================================================================================

9.继承中构造方法的访问特点

Demo01Constructor.java

package cn.itcast.day09.demo07;

/*
继承关系中,父子类构造方法的访问特点:

1. 子类构造方法当中有一个默认隐含的“super()”调用,所以一定是先调用的父类构造,后执行的子类构造。
2. 子类构造可以通过super关键字来调用父类重载构造。
3. super的父类构造调用,必须是子类构造方法的第一个语句。不能一个子类构造调用多次super构造。
总结:
子类必须调用父类构造方法,不写则赠送super();写了则用写的指定的super调用,super只能有一个,还必须是第一个。
*/
public class Demo01Constructor {

public static void main(String[] args) {
Zi zi = new Zi();
}

}

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Fu.java

package cn.itcast.day09.demo07;

public class Fu {

public Fu() {
System.out.println("父类无参构造");
}

public Fu(int num) {
System.out.println("父类有参构造!");
}

}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Zi.java

package cn.itcast.day09.demo07;

public class Zi extends Fu {

public Zi() {
super(); // 在调用父类无参构造方法
// super(20); // 在调用父类重载的构造方法
System.out.println("子类构造方法!");
}

public void method() {
// super(); // 错误写法!只有子类构造方法,才能调用父类构造方法。
}

}

================================================================================================================

10.super关键字的三种用法

========================================================================================================================

11.this关键字的三种用法

Fu.java

package cn.itcast.day09.demo09;

public class Fu {

int num = 30;

}

-------------------------------------------------------------------------------------------------------------------------------

Zi.java

package cn.itcast.day09.demo09;

/*
super关键字用来访问父类内容,而this关键字用来访问本类内容。用法也有三种:

1. 在本类的成员方法中,访问本类的成员变量。
2. 在本类的成员方法中,访问本类的另一个成员方法。
3. 在本类的构造方法中,访问本类的另一个构造方法。
在第三种用法当中要注意:
A. this(...)调用也必须是构造方法的第一个语句,唯一一个。
B. super和this两种构造调用,不能同时使用。
*/
public class Zi extends Fu {

int num = 20;

public Zi() {
// super(); // 这一行不再赠送
this(123); // 本类的无参构造,调用本类的有参构造
// this(1, 2); // 错误写法!
}

public Zi(int n) {
this(1, 2);
}

public Zi(int n, int m) {
}

public void showNum() {
int num = 10;
System.out.println(num); // 局部变量
System.out.println(this.num); // 本类中的成员变量
System.out.println(super.num); // 父类中的成员变量
}

public void methodA() {
System.out.println("AAA");
}

public void methodB() {
this.methodA();//也可以直接写methodA()
System.out.println("BBB");
}

}

============================================================================================================

12.super与this关键字图解

===================================================================================================================================

13.Java继承的三个特点

66666666666666666666666

java特性之二----继承的更多相关文章

  1. 面向对象的三大特性之二——继承(含super的使用)

    1.继承的语法:class 子类 extends 父类 例1: class Person { int age; String name; public void print1() { System.o ...

  2. JAVA三大特性之二——继承

    很多人在学习了JAVA以后,都会了解这个概念,而且继承也会在以后的开发中经常用到,但对于JAVA的继承特性,很多人都了解的不够深入,不够完整,当然这其中包括我,所以我就想抽点时间来整理一下JAVA继承 ...

  3. JAVA面对对象(二)——继承、方法的覆写

    1.继承就是基于已存在的类构造一个新类,继承已存在的类就能复用类的方法和属性,并且能够添加新的方法和属性.也就是子类和父类 2.一个父类可以拥有多个子类,一个子类只允许有一个父类 3.用extends ...

  4. java基础-多线程二

    java基础-多线程二 继承thread和实现Runnable的多线程每次都需要经历创建和销毁的过程,频繁的创建和销毁大大影响效率,线程池的诞生就可以很好的解决这一个问题,线程池可以充分的利用线程进行 ...

  5. 【转】java提高篇(二)-----理解java的三大特性之继承

    [转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in ja ...

  6. Java学习笔记二十一:Java面向对象的三大特性之继承

    Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...

  7. 第9章 Java类的三大特性之一:继承

    1.什么是继承 子类继承父类就是对父类的扩展,继承时会自动拥有父类所拥有的处private之外的所有成员作用:增加代码复用语法格式: class 子类名 extends 父类名{…………}第9章 Ja ...

  8. C#面向对象三大特性之二:继承

    面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低了耦合. 但在实际应用中,有好多对象具有相同或者相似的属性,比如有一个对象 果树 ...

  9. 浅析Java三大特性封装、继承、多态,及作业分析

    前言 本次博客衔接上次博客,作为这一阶段Java学习的分析.上一篇博客着重介绍了Java的OO编程思维,面向对象与面向过程的区别.本篇博客重心在Java的三大技术特性,附带作业分析. Java三大特性 ...

随机推荐

  1. beego控制器介绍

    控制器介绍 提示:在 v1.6 中,此文档所涉及的 API 有重大变更,this.ServeJson() 更改为 this.ServeJSON(),this.TplNames 更改为 this.Tpl ...

  2. SQL Server database – Error 3743

    Database mirroring must be removed before you drop SQL Server database – Error 3743 If you try to dr ...

  3. Docker安装部署es集群

    Docker安装部署es集群:环境准备:已安装docker的centos服务器一台1. 拉取es版本docker pull elasticsearch:5.6.82. 新建文件夹 数据挂载目录 和 配 ...

  4. 解决苹果手机app store下载软件超过200M后必须使用wifi的终极方法(亲测有效)

      前言 最近使用苹果手机下载一款大小为300M左右的软件时弹出如下提示 因为平时主要使用wifi下载,偶尔用自己的流量也没有超过200M,所以用了这么久才发现苹果手机有这样一个限制. 这让我有些郁闷 ...

  5. Phalanx HDU - 2859 dp

    #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> us ...

  6. numpy学习(四)

    练习篇(Part 4) 41. How to sum a small array faster than np.sum? (★★☆) arr = np.arange(10) print(np.add. ...

  7. jQuery---学习roadmap---4 parts

    jQuery---学习roadmap---4 parts jQuery初识 jQuery让js的开发变得更加简单 jQuery解决了浏览器的兼容性问题 学习目标 使用jQuery设计常见的效果 掌握j ...

  8. 详解C/C++中的的:#pragma pack(push) 、#pragma pack(pop) 和#pragma pack()

    前言 我们知道结构体内存对齐字节可以通过#pragma pack(n) 的方式来指定. 但是,有没有想过一个问题,某些时候我想4字节对齐,有些时候我又想1字节或者8字节对齐,那么怎么解决这个问题呢? ...

  9. Goland安装与配置

    前言 工欲善其事必先利其器,学习Go语言同样如此,一个强大的集成开发环境(IDE)能够大大提高我们的开发效率,目前市面上比较流行的有下面这几种: GoLand:由 JetBrains 公司开发的一个新 ...

  10. 1.spring源码-BeanPostProcessor后置处理器

    1.BeanPostProcessor接口的介绍: BeanPostProcessor是一个接口,其中有两个方法,postProcessBeforeInitialization和postProcess ...