About-继承

  • 所有Java的类均是由java.lang.Object类继承而来的,所以Object是所有类的祖先类,而除了Object外,所有类必须有一个父类。

  • 继承可以理解为一个对象从另一个对象获取属性的过程。

  • 如果类A是类B的父类,而类B是类C的父类,我们也称C是A的子类,类C是从类A继承而来的。在Java中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类。

Java只支持单继承(继承基本类和抽象类),但是我们可以用接口来实现(多继承接口来实现),脚本结构如:

public class Apple extends Fruit implements Fruit1, Fruit2{}

如何使用继承

1、编写父类

class A{

//共同的属性,方法 }

2、 编写子类,继承父类

class B extends A{ //子类持有的属性和方法 }

理解继承

1、子类访问父类成员

使用super关键字

2、访问父类属性

super代表父类对象 super.name;

3、 访问父类方法

super.print();

继承后的初始化顺序

  1. 父类属性
  2. 父类构造方法
  3. 子类属性
  4. 子类构造方法

不能继承的条件

有些父类成员不能继承:

  1. 子类不能访问父类private成员
  2. 子类与父类不在同包,使用默认访问权限的成员
  3. 构造方法

About-重载

  • 重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型呢?可以相同也可以不同。
  • 每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

重载规则

  • 被重载的方法必须改变参数列表;
  • 被重载的方法可以改变返回类型;
  • 被重载的方法可以改变访问修饰符;
  • 被重载的方法可以声明新的或更广的检查异常;
  • 方法能够在同一个类中或者在一个子类中被重载。
  • -


About-重写

重写(Override)

  • 重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变。即外壳不变,核心重写!
  • 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
  • 在面向对象原则里,重写意味着可以重写任何现有方法。

方法的重写。

  • 在有父类方法的子类重写父类的方法。
  • 默认调用父类方法内容。
  • 作用:可以在子类中重写父类方法。

调用父类中定义的方法结果:

1,如果子类没有重写父类的方法,调用的就是父类的实现。

2.如果子类重写了父类的方法,调用的就是子类中的实现。

方法写重写的规则

参数列表必须完全与被重写方法的相同;

返回类型必须完全与被重写方法的返回类型相同;

访问权限不能比父类中被重写的方法的访问权限更高。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。

父类的成员方法只能被它的子类重写。

声明为final的方法不能被重写。

声明为static的方法不能被重写,但是能够被再次声明。

如果一个方法不能被继承,那么该方法不能被重写。

子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。

子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。

重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。

构造方法不能被重写。

如果不能继承一个方法,则不能重写这个方法。


Super关键字的使用

当需要在子类中调用父类的被重写方法时,要使用super关键字。


“三剑客”的区别

Java——继承,重载,重写三剑客的更多相关文章

  1. Java继承、重写与重载

    1.java继承 1.1概念 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为. 继承可以使用extends和implem ...

  2. 乐字节Java继承|方法重写、super和final关键字

    大家好,乐字节的小乐又来了,上一篇是:乐字节Java|JavaBean.继承与权限修饰,也是属于Java继承的,今天继续Java继承. 一. 方法的重写 父类不满足子类的要求,按需改写.注意 方法签名 ...

  3. Java 继承与重写

    1.类的继承 1)继承 父类:所有子类所共有的属性和行为 子类:子类所特有的属性和行为 通过extends关键字来实现类的继承 子类(Sub class)可以继承父类(Super class)的成员变 ...

  4. Java继承,重写方法时改变方法的访问权限

    java中的方法天生具有继承多态特性,这点与C++有很大不同(需要在父类方发上加virtual关键字),但用起来确实方便了许多. 最简单的继承多态 声明一个接口BaseIF,只包含一个方法声明 pub ...

  5. java继承 子类重写父类方法

    package com.addd; //多态 public class Sld { private String name = "zhangsan"; public Sld() { ...

  6. Java 方法重载,方法重写(覆盖),继承等细节注意

    1.方法重载(method overload)的具体规范 如果有两个方法的方法名相同,但参数不一致,那么可以说一个方法是另一个方法的重载. 一.方法名一定要相同. 二.方法的参数表必须不同,包括参数的 ...

  7. java 继承、重载、重写与多态

    首先是java 继承.重载和重写的概念 继承: 继承的作用在于代码的复用.由于继承意味着父类的所有方法亦可在子类中使用,所以发给父类的消息亦可发给衍生类.如果Person类中有一个eat方法,那么St ...

  8. Java多态机制和继承中重写重载

    关于Java中多态机制 http://www.cnblogs.com/chenssy/p/3372798.html 这篇博文讲的很透彻 大体意思是 多态定义: 多态就是指程序中定义的引用变量所指向的具 ...

  9. Java中方法重写和方法重载

     首先方法重写和方法重载是建立在Java的面向对象的继承和多态的特性基础上而出现的.至于面向对象的继承和多态的特性我就不在这里多说了.继承是指在一个父类的基础再创建一个子类,这样子类就拥有了父类的非私 ...

  10. C#和Java的类、继承、重写与多态

    面向对象的三大特性是封装.继承.多态,C#和Java都是面向对象的语言所以他们的类.继承.重写与多态有很多共同点,但是实现上也存在一定的区别.其中Java中其实没有虚函数的概念,也可以认为Java的函 ...

随机推荐

  1. Reset 对象属性

    Input Reset 对象 在 HTML 表单中 标签每出现一次,一个 Reset 对象就会被创建. 当重置按钮被点击,包含它的表单中所有输入元素的值都重置为它们的默认值.默认值由 HTML val ...

  2. HTML表格样式

    一.表格的表头 1 <html> 2 3 <body> 4 5 <h4>表头:</h4> 6 <table border="1" ...

  3. redis系列:分布式锁

    redis系列:分布式锁 1 介绍 这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁.会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁. 本篇文章会将分布式锁的实现分 ...

  4. http ContentLength 为0 下载问题

    如图 通过http 下载某个东西 ,    WebResponse response = request.GetResponse(); response 调试如图 ContentLength 为0  ...

  5. 聊聊并发,进程通信方式,go协程简单应用场景

    开篇提问 知道并发,并行,线程,协程概念吗?或者知道大概含义吗? 有线程为什么还要有协程?区别是什么? 『进程』通信方式知道几种?有没有超过3种? golang『协程』通信方式推荐? 使用并发的目的是 ...

  6. notapai++ 使用小技巧

    alt+鼠标右键 建 实现整体添加字符 例: 25001510153394032 25001510153394034 25001510153393963 25001510153392080 25001 ...

  7. BPOS关于“相邻库存查询”的调整

    "相邻库存查询"的应用场景:主要是实现门店间,相互查看商品库存状况,但出于公司对门店的查看权限控制要求,不能一次性查看到相关店铺的所有库存,所以产生了"相邻库存查询&qu ...

  8. 我与CSDN的第一百天

  9. 超有用的linux笔记

    名词解释 根目录说明 tree -L 1 . ├── bin -> usr/bin # 英语binary的缩写,表示"二进制文件",bin目录包含了会被所有用户使用的可执行程 ...

  10. springboot源码解析-管中窥豹系列之Initializer(四)

    一.前言 Springboot源码解析是一件大工程,逐行逐句的去研究代码,会很枯燥,也不容易坚持下去. 我们不追求大而全,而是试着每次去研究一个小知识点,最终聚沙成塔,这就是我们的springboot ...