继承的格式

继承它描述的是两个类之间的关系,如果一个子类继承父类,那么子类可以使用父类非私有的成员。

 1 public class 父类{
2 //成员变量
3 //成员方法
4 }
5
6 public class 子类1 extends 父类{
7
8 }
9
10 public class 子类2 extends 父类{
11
12 }

继承的好处和弊端

1.提高了代码的复用性,可维护性
2.增强了耦合性(类与类之间的关系过于紧密)

什么时候使用继承?
类与类之间有共性的成员变量或者成员方法,才使用继承。 【共性抽取】
满足 is a的关系就可以使用继承。
猫 是 动物的一种, 猫继承动物
苹果 是 水果的一种,苹果继承水果

Java继承的特点

1.Java只支持单继承
一个儿子只能有一个爸爸

2.Java可以多层继承
儿子可以有一个爸爸,爸爸也可以有一个爸爸

注意:在Java中所有的类都直接或者间接的继承Object类

继承中成员的访问特点

1.成员变量的访问特点
遵循就近原则:子类有就用子类的,子类没有再找父类。

 1     public class Fu{
2 int num=10;
3 }
4 public class Zi extends Fu{
5 int num=20;
6
7 public void show(){
8 int num=30;
9 System.out.println(num); //30
10 System.out.println(this.num); //20
11 System.out.println(super.num); //10
12 }
13 }

2.成员方法的访问特点
遵循就近原则:子类有就用子类的,子类没有再找父类。
如果子父类有同名的成员方法啊,可以使用this和super进行区分。

 1     public class Fu{
2 int num=10;
3
4 public void show(){
5 System.out.println("fu...show");
6 }
7 }
8
9 public class Zi extends Fu{
10 public void show(){
11 System.out.println("zi...show");
12 }
13
14 public void method(){
15 this.show(): //调用本类自己的show方法
16 super.show(); //调用父类的show方法
17 }
18 }

3.构造方法的访问特点
1)所有子类的构造方法中,都会默认的去访问父类的空参数构造方法
原因是在构造方法的第一行,隐藏的有一个 super()

2)如果不想让子类去访问父类的空参数构造方法,可以手动的使用 super(参数) 去访问父类有参数的构造方法
【注意:this()或者super()去访问构造方法,只能写在构造方法的一条语句】

this和super的用法

1 this: 本类对象的引用
2 this.成员变量 调用本类的成员变量
3 this.成员方法 调用本类的成员方法
4 this(...) 调用本类的构造方法
5
6 super: 父类对象的引用
7 super.成员变量 调用父类的成员变量
8 super.成员方法 调用父类的成员方法
9 super(...) 调用父类的构造方法

下图是this和super调用构造方法的执行流程。

方法重写

方法重写:在子父类中继承关系中,子类和父类中有一模一样的方法。 这种现象叫做方法重写
【意义:方法重写,既能保证父类的方法不变,子类也有自己的实现】

方法重载:在同一个类中,有多个相同名称的方法,参数列表不同。这种现象叫做方法重载
【方便取名字,调用起来更加方便】

方法重写的注意事项:

1.父类的私有方法不能被子类重写
2.父类的静态方法不能被子类重写
3.子类重写父类的方法权限必须大于或者等于父类

1 public >  protected  > 默认的(不写) > private
2 用得比较多的是public和private

继承的案例

Java_继承的更多相关文章

  1. java_继承、实现、依赖、关联、聚合、组合的代码表示

    一.继承.实现.依赖.关联.聚合.组合的简单代码表示 1.继承关系 1).文字描述 一个类或者接口继承了另一个类或者接口,增加了在原有的方法和属性上增加了新的方法和属性. 2).代码表示 class ...

  2. 学习笔记 Java_静态_继承 2014.7.12

    一.静态 1.构造函数:       特点:       1. 函数名和类名同样.       2. 不用定义返回值类型(和void不是一回事,而构造函数是根本不用定义返回值类型).       3. ...

  3. java_基础_关于父类继承的问题

    关于java父类继承: 首先抽象类有这样几个规则 1.定义为抽象类的类里可以没有抽象方法 2.抽象类里可以有普通的不带abstract关键字的方法 3.抽象类里可以有主main方法 4.抽象类也可以向 ...

  4. ooday03 Java_引用类型数组_继承_super_向上造型

    引用类型数组: 点击查看代码 1)Bomb[] bs = new Bomb[3]; bs[0] = new Bomb(100,200); bs[1] = new Bomb(200,300); bs[2 ...

  5. Java_观察者模式(Observable和Observer) -转

    原文地址: Java_观察者模式(Observable和Observer) 一.观察者模式介绍    在Java中通过Observable类和Observer接口实现了观察者模式.一个Observer ...

  6. Java_框架面试题

    Java_框架面试题 欢迎来我Git上分享您的优秀建议 1.Spring框架分为哪七大模块,各模块的主要功能作用是什么? 七大模块,如下: 1. Spring Core: Core封装包是框架的最基础 ...

  7. Java_集合面试题

    Java_集合面试题 0.链表,队列和栈的区别? 链表是一种存储结构,指得是存储时候除了要存储数据元素之外,还要用数据元素一起的另外空间存储数据元素的关系. 队列和栈都是线性表,属于逻辑结构范畴,都是 ...

  8. javaScript的原型继承与多态性

    1.prototype 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉 ...

  9. JavaScript的继承实现方式

    1.使用call或apply方法,将父对象的构造函数绑定在子对象上 function A(){ this.name = 'json'; } function B(){ A.call(this); } ...

随机推荐

  1. KVM虚拟化配置

    KVM虚拟化 虚拟化概念 KVM虚拟化概念详讲 虚拟化配置 首先开启虚拟化的支持 并且增加一个50g的硬盘 free查看内存 grep -Ei 'vmx|svm' /proc/cpuinfo查看虚拟机 ...

  2. 【安全研究】Domain fronting域名前置网络攻击技术

    出品|MS08067实验室(www.ms08067.com) 千里百科 Domain Fronting基于HTTPS通用规避技术,也被称为域前端网络攻击技术.这是一种用来隐藏Metasploit,Co ...

  3. 技术分享PPT整理(二):C#常用类型与数据结构

    这篇博客起源于我对Dictionary.List.ArrayList这几个类区别的好奇,当时在改造公司的旧系统,发现很多地方使用了ArrayList,但我们平时用的多是泛型集合List,改造的时候要全 ...

  4. Android Studio 分类整理 res/layout 中的布局文件

    •准备工作 新建一个名为 TestLayouts 的项目: 进入 Project 模式: 来到 TestLayouts/app/src/main/res/layout 文件夹下: •分类整理 layo ...

  5. 关于一次配合开发工作而产生的服务器内核参数问题(Android 网络问题)

    关于一次配合开发工作而产生的服务器内核参数问题(Android 网络问题) 问题转载(本人与作者遇到了同样的问题) 问题描述 问题描述:在这几年的Android开发中,遇到了一个困扰我好久的问题,有时 ...

  6. Java学习笔记--文件IO

    简介 对于任何程序设计语言,输入和输出(Input\Output)都是系统非常核心的功能,程序运行需要数据,而数据的获取往往需要跟外部系统进行通信,外部系统可能是文件.数据库.其他程序.网络.IO设备 ...

  7. JS实现环绕地球飞行的3D飞行线动画效果(JS+HTML)

    1.项目介绍 JS+HTML实现绕地球飞行的3D飞行线动画效果,且3D地球可以随意拖动和滑动缩放,画面中心是蓝色地球,地球表面上的两点连线之间有光电随机出现沿着抛物线轨迹3D飞行,可使用较好的浏览器打 ...

  8. Dynamics Crm Plugin插件注册的问题及解决方案(持续更新。。。。。。)

    1.注册插件的时候回遇到如下提示 Plug-in assembly does not contain the required types or assembly content cannot be ...

  9. Python写的微服务如何融入Spring Cloud体系?

    前言 在今天的文章中小码哥将会给大家分享一个目前工作中遇到的一个比较有趣的案例,就是如何将Python写的微服务融入到以Java技术栈为主的Spring Cloud微服务体系中?也许有朋友会有疑问,到 ...

  10. Android+Spring Boot 选择+上传+下载文件

    2021.02.03更新 1 概述 前端Android,上传与下载文件,使用OkHttp处理请求,后端使用Spring Boot,处理Android发送来的上传与下载请求.这个其实不难,就是特别多奇奇 ...