为什么需要重写?

父类的功能,子类不一定需要,或者不一定满足

场景一

  • 重写都是方法的重写,和属性无关
  • 父类的引用指向了子类
  • 用B类新建了A类的对象,把A赋值给了B,这时候B是A,A又继承了B类,向上转型。所以调用B类方法的时候,也就是B=>test
  • 定义的是static,new一个对象时,左边引用的类是哪个就用的哪个类下面的方法
package oop.demo05;

//重写都是方法的重写,和属性无关
public class B {
public static void test(){
System.out.println("B=>test()");
}
}
package oop.demo05;

//继承
public class A extends B{
public static void test(){
System.out.println("A=>test()");
}
}
package oop;

import oop.demo05.A;
import oop.demo05.B; public class Application {
public static void main(String[] args) { //可以调用哪些方法和左边的类有关,和右边的new关系不大
A a = new A();
a.test();//A //父类的引用指向了子类
B b = new A();
b.test();//B
}
}

场景二

  • 重写只和非静态方法有关。只有非静态方法可以重写;并且私有private修饰重写不起来
  • 静态方法是类的方法,而非静态是对象的方法
  • 有static时,b调用了B类的方法,因为b是用b类定义的
  • 没有static时,b调用的是对象的方法,而b是用A类new的;即重写了父类的方法
  • 静态方法只能继承,不能重写

 

重写

需要有继承关系,子类重写的是父类的方法!!!属性不一样的那叫重载,重写与属性无关!!!

  • 方法名必须相同
  • 参数列表必须相同
  • 修饰符:范围可以扩大但不能缩小    public(公共的) > protected(受保护的)>default(默认的)>private(私有的)
  • 抛出的异常:范围,可以被缩小,但不能扩大  ClassNotFoundException --> Exception(大)

重写总结:

  • 子类的方法和父类必要一致;方法体不同!
  • 快捷键Alt+Insert选择override
  • 重写的方法,注解解@Override

Java面向对象系列(9)- 方法重写的更多相关文章

  1. JAVA面向对象之重载与重写

    重写:子类对父类方法的重新编写 返回值不变,形参不变 不能抛出新的或者范围更广的异常 class Animal{ public void move(){ System.out.println(&quo ...

  2. Java面向对象系列(7)- 什么是继承

    继承 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模 extands的意思是"扩展".子类是父类的扩展 JAVA中类只有单继承,没有多继承 继承是类和类之间的一种关系. ...

  3. Java 面向对象—杂项(方法不能重写,修饰符,变量)

    一.哪些方法不能被重写? 1.final 修饰的不能重写 2.static 修饰的不能重写 3.private 修饰的,因为私有的在子类中不可见 4.如果跨包的话,修饰符缺省的也不能被重写,因为缺省的 ...

  4. Java面向对象系列(2)- 回顾方法的定义

    方法的定义 修饰符 返回类型 break:跳出switch,结束循环和return的区别 方法名:注意规范,见名知意 参数列表:(参数类型,参数名) 异常抛出 package oop.demo01; ...

  5. Java面向对象系列(3)- 回顾方法的调用

    方法的调用 静态方法 非静态方法 形参和实参 值传递和引用传递 this关键字(继承篇讲解) 静态方法 非静态方法 形参和实参 package oop.demo01; public class Dem ...

  6. java中的equals()方法重写

    如何java中默认的equals方法跟实际不符的话,需要重写equals方法.例如: public class TestEquals { public static void main(String[ ...

  7. Java 深度克隆 clone()方法重写 equals()方法的重写

    1.为什么要重写clone()方法? 答案:Java中的浅度复制是不会把要复制的那个对象的引用对象重新开辟一个新的引用空间,当我们需要深度复制的时候,这个时候我们就要重写clone()方法. 2.为什 ...

  8. Java设计模式系列-工厂方法模式

    原创文章,转载请标注出处:<Java设计模式系列-工厂方法模式> 一.概述 工厂,就是生产产品的地方. 在Java设计模式中使用工厂的概念,那就是生成对象的地方了. 本来直接就能创建的对象 ...

  9. Java 面向对象之继承和重写OverWrite,重写和重载的区别,抽象类

    01继承的概述 A:继承的概念 a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 b:在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作 ...

随机推荐

  1. 【原创】一文彻底搞懂安卓WebView白名单校验

    前言 近两年公司端侧发现的漏洞很大一部分都出在WebView白名单上,针对这类漏洞安全编码团队也组织过多次培训,但是这种漏洞还是屡见不鲜.下面本人就结合产品中容易出现问题的地方,用实例的方式来总结一下 ...

  2. SQL 练习31

    查询任何一门课程成绩在 70 分以上的姓名.课程名称和分数 SELECT Sname,cname,Course.CId,SC.score from Student,Course,sc WHERE St ...

  3. SSM自学笔记(四)

    8.面向切面编程AOP 1.Spring 的 AOP 简介 1.1 什么是 AOP AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运 ...

  4. 有了Swagger2,再也不用为写Api文档头疼了

    1.为什么要写Api文档 现在,前后端分离的开发模式已经非常流行,后端开发工程师只负责完成后端接口,前端页面的开发和渲染完全由前端工程师完成. 问题来了,前端工程师怎么知道后端接口的具体定义呢?答案是 ...

  5. uwp 的】listView 选择

    xml 代码 ---------------------------------------------------------- <Page x:Class="ContentCont ...

  6. ubuntu下配置JDK的一些坑点

    ubuntu下配置JDK的一些坑点 在centos下的JDK配置: 在ubuntu下的话,要修改两个地方: 在/etc/enviornment中配置! 在/etc/profile中配置! 写在最后: ...

  7. 刷题-力扣-264. 丑数 II

    264. 丑数 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/ugly-number-ii/ 著作权归领扣网络所有.商业转载请 ...

  8. C# - 习题02_写出程序的输出结果a.Fun()

    时间:2017-08-23 整理:byzqy 题目:写出程序的输出结果: 文件:Program.cs 1 using System; 2 3 namespace Interview1 4 { 5 pu ...

  9. WIN10 64bit + QT5.10.0(MinGW3.5.0) + OpenCV3.4.1 无痛安装、配置

    安装QT和配置MinGW 官方下载qt-opensource-windows-x86-5.10.0.exe 正常步骤安装QT5.10.0,安装过程选择自带的MinGW3.5.0编译器即可. 打开QtC ...

  10. SpringMVC笔记(1)

    一.SpringMVC简介 1.1 MVC模型 MVC模型 MVC全名是Model View Controller,是模型(model)- 视图(view)- 控制器(controller)的缩写,是 ...