广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java构造器方法深入理解
  • 474
分享到

Java构造器方法深入理解

2024-04-02 19:04:59 474人浏览 薄情痞子

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

摘要

目录重载1.构造器的重载2.方法的重载(overload)重写重载 1.构造器的重载 因为构造器的名字必须与类名相同,所以同一个类的所有构造器名肯定相同,构成重载;为了让系统能区分不

重载

1.构造器的重载

因为构造器的名字必须与类名相同,所以同一个类的所有构造器名肯定相同,构成重载;为了让系统能区分不同的构造器,多个构造器的参数列表必须不同。


class Person{
    int age;
    String name;
    public Person(){
    }
    public Person(int age){
        this.age = age;
    }
    public Person(int age,String name){
        this(age);
        this.name = name;
    }
}

2.方法的重载(overload)


1.定义:在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。

两同一不同”:同一个类、相同方法名

参数列表不同:参数个数不同,参数类型不同

2.举例:

Arrays类中重载的sort() / binarySearch()

3.判断是否重载:

跟方法的权限修饰符、返回值类型、形参变量名、方法体都没有关系!


class Person{
    public void getSum(int i,int j){//A    
        System.out.println("憨憨");
    }
    public void getSum(double d1,double d2){//B
    }
    public void getSum(String s,int i){//形参先后顺序不同,也构成重载//C
    }
    public void getSum(int i,String s){//D
    }
    public void getSum(int i,int j){//与方法体无关!!!!
        return 0;
    }
    public void getSum(int m,int n){//与参数名无关!!!!
    
    }
    private void getSum(int i,int j){//与权限修饰符大小无关!!!!
    
    }
}

4.在通过对象调用方法时,如何确定某一个指定的方法 :

方法名------>参数列表

重写

为什么要重写:父类的功能无法满足子类的需求

方法重写的前提:必须要存在继承的关系!

应用:重写以后,当创建子类对象以后,通过子类对象调用子父类的同名参数的方法时,实际执行的时子类重写父类的方法

重写的规定:

方法的声明:权限修饰符 返回值类型 方法名(形参列表) throws 异常的类型{

//方法体

}

约定俗称:子类中的叫重写的方法,父类中的叫被重写的方法

A. 子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同

B. 子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符

>特殊情况:子类不能重写父类中声明为private权限的方法

C. 返回值类型:

>父类被重写的方法的返回值类型是void,则子类重写的方法的返回值类型只能是void

>父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类或A的子类


//这样算重写,String是Object的子类
pulbic Object show(){//父类方法
}
public String show(){//子类方法
}

//这样不是重写,返回值类型不同
pulbic void catch(){//父类方法
}
pulbic int  catch(){//子类方法
}

>父类被重写的方法的返回值类型是基本数据类型(比如:double).则子类重写的方法的返回值类型必须是相同的(double)

D.子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型.(可以抛出异常类型更少、异常类型更小、不抛出异常)

子类和父类中的同名同参数的方法要么都声明为非static的(考虑重写),要么都声明为static的(不是重写)。

注意:A 父类的静态方法不能被子类覆盖为非静态方法。 B 父类的静态方法不能被子类覆盖为静态方法。(这两点与上面的那句话表达的是一个意思)

E.静态方法不能被重写

原因:重写依赖于类的实例,而静态方法和类实例并没有什么关系。而且静态方法和类实例并没有什么关系。而且静态方法在编译时就已经确定,而方法重写是在运行时确定的(动态绑定)。(也可以说java多态体现在运行时、而static在编译时、与之相悖)

《JAVA编程思想》中多次的提到:方法是静态的、他的行为就不具有多态性。静态方法是与类、而非单个对象相关联的。

区分方法的重载和重写

重载:不表现为多态性。

重写:表现为多态性。

从编译和运行的角度来看:

重载,是指允许存在多个同名方法,而这些方法的参数不同。编译器根据方法不同的参数列表,对同名方法的名称做修饰。对于编译器而言,这些同名方法就成了不同的方法。他们的调用地址在编译期间就绑定了。Java的重载是可以包括父类和子类的,即子类可以重载父类的同名不同参数的方法。

所以:对于重载而言,在方法调用之前,编译器就已经确定了所要调用的方法,这称为“早绑定”或“静态绑定”;

而对于多态,只有等到方法调用的那一刻,解释运行器才会确定所要调用的具体方法,这称为“晚绑定”或“动态绑定”;

引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚绑定,它就不是多态。”

重写规则补充

1.父类的抽象方法可以被子类通过两种途径重写(即实现和重写)。

2.父类的非抽象方法可以被重写为抽象方法(此时:子类必须为抽象类)。

到此这篇关于Java构造器方法深入理解的文章就介绍到这了,更多相关Java 构造器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java构造器方法深入理解

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java构造器方法深入理解
    目录重载1.构造器的重载2.方法的重载(overload)重写重载 1.构造器的重载 因为构造器的名字必须与类名相同,所以同一个类的所有构造器名肯定相同,构成重载;为了让系统能区分不...
    99+
    2022-11-12
  • 深入浅析Java中的构造方法
    深入浅析Java中的构造方法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。构造函数是一种特殊的函数。其主要功能是用来在创建对象时初始化对象, 即为v对象成员变量赋初始值,总...
    99+
    2023-05-31
    java 构造方法 ava
  • 深入探究Java线程的创建与构造方法
    目录一、创建线程启动线程—start 方法方法一方法二方法三方法四方法五方法六二、run方法和start方法的区别①方法性质不同②执行速度不同③调用次数不同总结三、线程的...
    99+
    2022-11-13
  • Java有参构造方法与无参构造方法(完全理解)
    文章目录 前言有参构造方法无参构造方法定义四个类说明情况(如果还不清晰请看)Lombok的基本使用 前言 遇到了就简单写一下吧,如果能够对你有帮助,点个赞吧。首先清晰明了的了解到有参构造方法与无参构造方法、以及应用,然后实战...
    99+
    2023-08-16
    java intellij-idea 开发语言
  • java构造器 默认构造方法及参数化构造方法
    目录1、构造器1.1 权限修饰符是public 1.2 显示定义构造器1、构造器 构造器也叫构造方法、构造函数,是一种特殊类型的方法,负责类中成员变量(域)的初始化。构造器的用处是在...
    99+
    2022-11-12
  • 深入理解Java main方法详解
    目录1. 深入理解 main 方法2. 在 Idea 下如何传递参数总结1. 深入理解 main 方法 解释main方法的形式:public static void main(Str...
    99+
    2022-11-12
  • 深入理解Java new String()方法
    问题一:这段代码创建了几个对象? String str1 = new String("aa"); 答案是两个 “aa”对象和String对象 其中有一项是常量池 常量池在Cla...
    99+
    2022-11-12
  • 详解JAVA中的构造方法
    目录 一、构造方法的概念 二、构造方法的特性 一、构造方法的概念         构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时由编译器自动调用,并且在整个对象的生命周期内只调用一次。 代码演示:...
    99+
    2023-09-07
    java
  • Java构造方法和方法重载详解
    目录第一 构造方法的作用第二 构造方法的特点方法重载总结类的结构包括 : 1. 成员变量 2. 成员方法 3. 构造方法 4. 代码块 5. 内部类 第一 构造方法的作用 主要有以下...
    99+
    2022-11-13
  • Java 构造方法的使用详解
    目录1. 看一个需求2. 基本语法3. 基本介绍4. 快速入门5. 注意事项和使用细节6. 练习1. 看一个需求 看一个需求:前面我们在创建人类的对象时,是先把一个对象创建好后,再给...
    99+
    2022-11-12
  • JAVA构造函数(方法)示例详解
    目录 一、什么是构造函数二、构造函数的特点三、示例四、默认构造函数五、构造函数的重载六、构造函数的使用构造函数的特点总结 一、什么是构造函数 Java构造函数,也叫构造方法,是JAV...
    99+
    2022-11-12
  • 关于Java类的构造方法详解
    ​Java语言中,类的构造方法是一种很特殊的方法。关于构造方法要记忆和理解的知识点其实挺多的,下面我们就来详细的讲讲构造方法,相信看过这篇文章之后,你会对构造方法有一个比较深刻的认识...
    99+
    2023-01-28
    java类的构造方法 java类的构造方法有什么作用 java类的构造函数怎么写
  • Java Swing的层次结构深入理解
    目录Java Swing的层次结构什么是Java SwingSwing组件的层次结构关于三层组件Java Swing基础(层次结构,组件,布局管理)Swing基础层次结构Swing ...
    99+
    2022-11-12
  • 深入理解Java设计模式之建造者模式
    目录一、什么是建造者模式二、建造者模式的应用场景三、建造者模式的优缺点四、工厂模式和建造者模式的对比五、建造者模式的实现六、总结一、什么是建造者模式 建造者模式也称生成器模式 定义:...
    99+
    2022-11-12
  • Java基础学习之构造方法详解
    目录一、构造方法概述二、构造方法的注意事项三、标准类制作一、构造方法概述 构造方法是一种特殊的方法 作用:创建对象Student stu = new Student(); 格式: p...
    99+
    2022-11-13
  • Java数据结构与算法之单链表深入理解
    目录一、单链表(Linked List)简介二、单链表的各种操作1.单链表的创建和遍历2.单链表的按顺序插入节点 以及节点的修改3.单链表节点的删除4.以上单链表操作的代码实现 (通...
    99+
    2022-11-12
  • 深入理解java中Arrays.sort()的用法
    在Java中,Arrays.sort()方法是用来对数组进行排序的。它使用了经过优化的快速排序算法,可以对任何类型的数组进行排序。A...
    99+
    2023-08-14
    Java
  • 构造器与java方法的对比示例
    这篇文章主要介绍了构造器与java方法的对比示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应...
    99+
    2023-06-14
  • java构造方法重载问题怎么解决
    在Java中,构造方法重载问题可以通过为每个构造方法提供不同的参数列表来解决。构造方法重载是指在同一个类中定义多个构造方法,每个构造...
    99+
    2023-09-23
    java
  • 深入理解Java虚拟机 JVM 内存结构
    目录前言JVM是什么JVM内存结构概览运行时数据区程序计数器Java虚拟机栈本地方法栈方法区运行时常量池Java堆直接内存前言 JVM是Java中比较难理解和掌握的一部分,也是面试中...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作