Java面向对象系列(9)- 方法重写
为什么需要重写?
父类的功能,子类不一定需要,或者不一定满足
场景一
- 重写都是方法的重写,和属性无关
- 父类的引用指向了子类
- 用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)- 方法重写的更多相关文章
- JAVA面向对象之重载与重写
重写:子类对父类方法的重新编写 返回值不变,形参不变 不能抛出新的或者范围更广的异常 class Animal{ public void move(){ System.out.println(&quo ...
- Java面向对象系列(7)- 什么是继承
继承 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模 extands的意思是"扩展".子类是父类的扩展 JAVA中类只有单继承,没有多继承 继承是类和类之间的一种关系. ...
- Java 面向对象—杂项(方法不能重写,修饰符,变量)
一.哪些方法不能被重写? 1.final 修饰的不能重写 2.static 修饰的不能重写 3.private 修饰的,因为私有的在子类中不可见 4.如果跨包的话,修饰符缺省的也不能被重写,因为缺省的 ...
- Java面向对象系列(2)- 回顾方法的定义
方法的定义 修饰符 返回类型 break:跳出switch,结束循环和return的区别 方法名:注意规范,见名知意 参数列表:(参数类型,参数名) 异常抛出 package oop.demo01; ...
- Java面向对象系列(3)- 回顾方法的调用
方法的调用 静态方法 非静态方法 形参和实参 值传递和引用传递 this关键字(继承篇讲解) 静态方法 非静态方法 形参和实参 package oop.demo01; public class Dem ...
- java中的equals()方法重写
如何java中默认的equals方法跟实际不符的话,需要重写equals方法.例如: public class TestEquals { public static void main(String[ ...
- Java 深度克隆 clone()方法重写 equals()方法的重写
1.为什么要重写clone()方法? 答案:Java中的浅度复制是不会把要复制的那个对象的引用对象重新开辟一个新的引用空间,当我们需要深度复制的时候,这个时候我们就要重写clone()方法. 2.为什 ...
- Java设计模式系列-工厂方法模式
原创文章,转载请标注出处:<Java设计模式系列-工厂方法模式> 一.概述 工厂,就是生产产品的地方. 在Java设计模式中使用工厂的概念,那就是生成对象的地方了. 本来直接就能创建的对象 ...
- Java 面向对象之继承和重写OverWrite,重写和重载的区别,抽象类
01继承的概述 A:继承的概念 a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 b:在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作 ...
随机推荐
- Apache/Nginx/IIS日志记录的各个字段内容与含义
一.Apache 1.1 Apache日志文件名称及路径介绍 当我们安装并启动Apache后,Apache会自动生成两个日志文件,这两个日志文件分别是访问日志access_log(在Windows上是 ...
- .NET 6 全新指标 System.Diagnostics.Metrics 介绍
前言 工友们, .NET 6 Preview 7 已经在8月10号发布了, 除了众多的功能更新和性能改进之外, 在 preview 7 版本中, 也新增了全新的指标API, System.Diagno ...
- CMD下编译运行Java程序
准备1:JDK下好了 准备2:环境变量配置好了 准备3:本次测试用的是JDK8,用JDK10的在Eclipse里面好像用不了 满足上面三个条件,那可以继续看下去了 Test_1:带包编译运行 代码: ...
- Blazor+Dapr+K8s微服务之状态管理
1 状态管理服务器端接口 1.1 添加Dapr.AspNetCore包 在DaprTest1.Server项目中添加Dapr.AspNetCore包,该包实现了ASP. ...
- noip28
东方专场? T1 %%%WYZG 话说我考场上还想二维hash来着 考虑只记录弹幕中x的相对位置. 先选定弹幕一个点作为基准点(第一个出现的x即可),然后,枚举其他的x,记录下坐标差,然后去方格图中枚 ...
- 聊一聊中台和DDD(领域驱动设计)
本次分享价值:本次分享主要针对中台.微服务和领域模型的理念.本质及其构建方法论进行探讨.对领域分析的价值所在就是寻求"千变万化"中相对的"稳定性.第一性",然后 ...
- zookeeper同一台服务器创建伪集群
下载zk wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7 ...
- mysql 局域网连接
下面分别简述操作: 配置虚拟机网络 默认方式是NAT,但为了让宿主机之外的其它计算机也能访问虚拟机,NAT方式配置起来有些复杂,这里推荐用桥接模式,关于VM的几种网络方式的区别,可以参考这篇文章配置好 ...
- Linux 第一个静态库 (两种方法)
方法1 --------------------------------------------- Linux下 静态库 一般为.a为扩展名 类似 lib***.a 的文件名.利用静态函数库编译 ...
- Git分支创建命令
一. 创建test分支提交步骤 1.列出所有分支 # git branch -a 2.创建test分支 # git branch test 3.切换到test分支: ...