返回顶部
首页 > 资讯 > 后端开发 > Python >JavaSE-面向对象(方法重写)
  • 348
分享到

JavaSE-面向对象(方法重写)

2024-04-02 19:04:59 348人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录方法重写Override重写方法重写小结:总结方法重写与之前的方法重载不同 回顾一下方法重载,相同的方法名不同参数类型和参数数量以及参数顺序 package Demo1; i

方法重写与之前的方法重载不同

回顾一下方法重载,相同的方法名不同参数类型和参数数量以及参数顺序


package Demo1;
import java.util.Arrays;
public class Demo011 {
    public static void main(String[] args) {
        Demo011 D11=new Demo011();
        D11.demo(12,232,43,3);		//4个实际参数,则调用第三个demo方法
    }
    public void demo(int a,int b){
        System.out.println(a+b);
    }
    public void demo(int a,int b,int c){
        System.out.println(a+b+c);
    }
    public void demo(int...ints){
        System.out.println(Arrays.toString(ints));
    }
}

方法重写

重写都是方法的重写与属性无关


package Demo1;
public class Demo012 {
    public static void main(String[] args) {
            B b =new B();
            b.demo();
    }
}
class A{
    public static void demo(){
        System.out.println("Ademo");
    }
}
class B extends A{
    public static void demo(){
        System.out.println("Bdemo");
    }
}

执行结果:

Bdemo

父类的引用指向子类进行引用


    public static void main(String[] args) {
    //方法的调用只和数据类型有关
            B b =new B();		//调用的是B类的静态方法
            b.demo();
            //父类的引用指向子类
            A a = new A();		//调用的是A类的静态方法
            a.demo();
    }

执行结果:

Bdemo
Ademo

使用快捷键Alt+insert快速生成重写方法

在这里插入图片描述

在这里插入图片描述

Override重写方法


class A{
    public  void demo(){
        System.out.println("Ademo");
    }
}
class B  extends A{
    @Override	//注解,有功能的注释
    public void demo() {
        super.demo();		//默认调用父类的demo()方法
    }
}

使用Override重写默认是调用父类的方法,我们可以在重写方法中调用自己的方法


class A{
    public  void demo(){
        System.out.println("Ademo");
    }
}
class B  extends A{
    @Override
    public void demo() {
        //super.demo(); 默认调用父类的demo()方法输出Ademo
        System.out.println("Bdemo");
    }
}

重写之后执行结果:

Bdemo
Bdemo

子类重写父类的demo()方法之后输出为demoB,但是并不是子类重写之后将父类的方法修改了,子类在进行调用的时候调用的是重写后父类的方法


package Demo3;
public class demo005 {
    public static void main(String[] args) {
            DemoB DB =new DemoB();
            DB.demo();		//调用子类的demo
            DemoA DA=new DemoA();	//调用父类的demo
            DA.demo();
    }
}
class DemoA{
    public void demo(){
        System.out.println("demoA");
    }
}
class DemoB extends DemoA{		//继承
    @Override
    public void demo(){
        System.out.println("demoB");
    }
}

执行结果:

demoB
demoA

但是我可以完全不继承父类也能输出demoB,demoA


package Demo3;
public class demo005 {
    public static void main(String[] args) {
            DemoB DB =new DemoB();
            DB.demo();
            DemoA DA=new DemoA();
            DA.demo();
    }
}
class DemoA{
    public void demo(){
        System.out.println("demoA");
    }
}
class DemoB{		//A与B没有继承关系
    public void demo(){
        System.out.println("demoB");
    }
}

执行结果:

demoB
demoA

两种方式有什么区别呢?

  • 子类继承父类重写方法,是通过子类调用父类的方法进行重写的,子类执行结果也是重写后的方法,但并不是子类把父类的方法修改了
  • 方式二是在两个不同类下创建demo()方法,通过对象进行调用。

父类方法若添加static修饰符则重写失败提示错误

进行方法重写时静态方法和非静态方法的区别很大,如果是加了static静态方法,调用结果之和左边定义的类有关。方法重写与非静态方法有关

在这里插入图片描述

私有方法无法进行方法重写,重写的关键词只能是public不能是private私有的

在这里插入图片描述

重写小结:

  • 方法重写需要有继承关系,子类重写父类的方法
  • 子类方法与父类的方法方法名和修饰符必须相同
  • 以及方法的参数列表必须相同,不相同则为方法重载
  • 修饰符范围可以扩大但是不能缩小,private(小)–>proteated–>default–>public(大)
  • 重写可能会抛出异常,异常范围可以被缩小但不能扩大

为什么需要重写?

  • 父类的功能子类不一定需要或者不一定满足,父类的东西太多了子类可能只需要一点

快捷键Alt+insert

快速创建Override

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: JavaSE-面向对象(方法重写)

本文链接: https://lsjlt.com/news/132261.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaSE-面向对象(方法重写)
    目录方法重写Override重写方法重写小结:总结方法重写与之前的方法重载不同 回顾一下方法重载,相同的方法名不同参数类型和参数数量以及参数顺序 package Demo1; i...
    99+
    2024-04-02
  • Java面向对象之继承、构造方法、重写、重载
    目录构造方法无参构造有参构造注意类的继承方法重写、重载重写重载构造方法 类的构造方法是特殊的方法,此方法名称必须和类名一致,构造不能有返回值 不使用void,不能直接调用,在类对象实...
    99+
    2023-03-24
    Java面向对象 Java继承 Java构造方法 Java重写 Java重载
  • 【JavaSE】面向对象编程思想之继承
     【本节目标】 继承 组合 目录 1. 为什么需要继承 2. 继承概念 3. 继承的语法 4. 父类成员访问 4.1 子类中访问父类的成员变量 4.2 子类中访问父类的成员方法 5. super关键字 6. 子类构造方法 7....
    99+
    2023-09-03
    java 开发语言 学习方法
  • Java面向对象之继承、构造方法、重写、重载怎么实现
    这篇“Java面向对象之继承、构造方法、重写、重载怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java面向对象之继...
    99+
    2023-07-05
  • golang面向对象的写法是什么
    Go语言是一门强调简洁、高效、并发的编程语言,它的面向对象编程方式与其他语言略有不同。以下是一些Golang中实现面向对象编程的常见...
    99+
    2023-10-21
    golang
  • python 面向对象之类方法
    类方法通过@classmethod装饰器实现,类方法和普通方法的区别是, 类方法只能访问类变量,不能访问实例变量举个例子class Dog(object):     def __i...
    99+
    2023-01-30
    面向对象 方法 python
  • python 面向对象之静态方法
    通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不...
    99+
    2023-01-30
    静态 面向对象 方法
  • Rust实现面向对象的方法
    目录前言1、实现封装(pub)2、实现继承(trait)2.1、为共有行为定义一个 Trait2.2、Trait 对象执行的是动态派发2.3、Trait对象必须保证对象安全3、实现多...
    99+
    2022-11-13
    Rust面向对象 Rust面向对象实现
  • Java 面向对象 之 封装方法
    转载于 : http://www.verejava.com/id=16992728331734 public class Encapsulation {public static&...
    99+
    2023-06-02
  • PHP面向对象02:面向对象高级
    PHP面向对象02:面向对象高级 一、设计模式1. 单例模式2. 工厂模式 二、面向对象三大特性1. 封装2. 继承3. 多态 三、继承1. 实现继承2. 有限继承a. 属性都能继承b...
    99+
    2023-09-01
    php 单例模式 开发语言
  • 面向对象
    面向对象 特性 class  object 封装、继承、多态 语法:属性、方法 构造函数(在实例化时做一些类的初始化的工作 该函数是用于传参数) 析构函数(在实例释放、销毁的时候自动执行的、通常用于一些收尾工作,如:关闭一些数据库链接,关...
    99+
    2023-01-30
    面向对象
  • Python GUI 编程:面向对象的方法
    ...
    99+
    2024-04-02
  • python 面向对象、类、对象
    class 类 object 对象 object-oriented programming 面向对象,简称OOP attribute 属性 method 方法 inheritance 继承 python中通过类和对象来实现 ...
    99+
    2023-01-31
    面向对象 对象 python
  • Python面向对象之面向对象基本概念
    面向过程和面向对象概念 过程和函数:过程类似于函数,只能执行,但是没有返回结果;函数不仅能执行,还能返回结果。 面向过程和面向对象 基本概念 面向过程-怎么做 把完成某一个需求的所有步骤从头到尾逐步实现; 根据开发需求,将某些功能独立的...
    99+
    2023-01-31
    面向对象 基本概念 Python
  • python 面向对象
    面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序...
    99+
    2023-01-30
    面向对象 python
  • python面向对象
    python面向对象 目录: 1.类的定义和使用 2.类的封装 3.类的继承 4.多态   1.类的定义和使用 查、增加、修改、删除、初始化方法、实例化 __init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这...
    99+
    2023-01-30
    面向对象 python
  • Python|面向对象
    #一、类、对象定义及使用 #定义类语法:class 类名(父类):代码块注意:()可有可无 #class Student: #class Student(): #创建对象(实例)语法:对象名=类名() 注意:Java语言在实例化对...
    99+
    2023-01-30
    面向对象 Python
  • python - 面向对象
    #python面向对象 - 类定义   注意:特殊方法"__init__"前后分别有两个下划线!!!   __init__方法可以理解成定义属性的方法,编辑器中会默认将属性都绑定到self中,在使用时直接self.shuxing 即可哟;...
    99+
    2023-01-31
    面向对象 python
  • Python3 面向对象
    Python3 面向对象 python是一门面向对象语言,在python中有一句话:一切都是对象 面向对象简介 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 ...
    99+
    2023-01-31
    面向对象
  • python3_07.面向对象
        面向对象程序设计的基本步骤:    1、根据功能、抽象业务对象。    2、构建独立的业务模块,利用封装、继承、多态等抽象业务需求。    3、编写程序。    4、以对象为单位输入参数、开展测试。global关键字用来在函数或其他...
    99+
    2023-01-31
    面向对象
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作