当前位置: 首页 > article >正文

Java进阶之路:构造方法

🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝

🥇博主昵称:小菜元

🍟博客主页:小菜元

🥗感谢点赞👍评论🃌

⚇很方便的在线编辑器:Lightly

让我们一起在写作中记录学习吧!

目录

Java构造方法是什么

Java构造方法的样式以及基本概念


Java构造方法是什么

Java的构造方法也叫构造函数,他和类里的其他方法的区别其实并不大,最大的区别就是使用的时间和方法,即当我们对创建类的实例时,他就会随着实例进行执行,当我们不对构造方法进行重载或重写时他是没有返回值,不容易被发现的,因为这时他并没有被我们写出来!而当我们进行重载时并进行值的输入,他就会根据你的定义进行运行!

Java构造方法的样式以及基本概念

Java的构造方法的方法名与类名必须一致,否则他就不是构造方法构造方法定义必须遵循以下几个规则

  1. 不能定义构造方法静态的
  2. 不能有返回值
  3. 可以定义输入值
  4. 当定义一个构造方法时,Java就不会自动构造默认构造方法
class GouZao{
    public static void main(String args[]){
    }
    public GouZao(int a){
        
    }
}

他的构造方式其实很简单



class GouZao{
    public static void main(String args[]){
        GouZao gz = new GouZao();
        GouZao gz1 = new GouZao(10);
    }
    private int a = 1;
    public GouZao(){
        System.out.println("我是没有赋值的构造方法");
    }
    public GouZao(int a){
        this.a = a; 
        System.out.println("我是赋值了的构造方法,我的数值是:"+ a);
    }
}

显而易见这个构造方法的定义和赋值十分简单,构造方法的作用就是在一开始对对象进行初始化,当然我们也可以对类的方法进行复制!

在Java中,构造方法的调用顺序通常遵循以下规则:

  1. 在创建子类对象时,首先会调用父类的构造方法(无参构造方法或带参构造方法)。
  2. 在父类构造方法执行完毕后,接着在子类中执行构造方法体。
  3. 如果子类中还有更多的子类,则依次递归地进行构造方法的调用。
class Parent {
    public Parent() {
        System.out.println("Parent constructor");
    }
}
 
class Child extends Parent {
    public Child() {
        System.out.println("Child constructor");
    }
}
 
public class Zao {
    public static void main(String[] args) {
        Child child = new Child();
    }
}

那这个时候就有朋友会问了,如果我父类有两个构造方法一个有参数一个没有参数,子类也是如此,那么执行思路是怎么样的



class GouZao{
    private int a = 1;
    public GouZao(){
        System.out.println("我是一号构造方法");
    }
    public GouZao(int a){
        this.a = a; 
        System.out.println("我是带有参数的一号构造方法");
    }
}
class Gou1 extends GouZao{
    public Gou1(){
        System.out.println("我是二号构造方法");
    }
    public Gou1(int a){
        System.out.println("我是带有参数的二号构造方法");
    }
}
public class Zao{
    public static void main(String args[]){
        Gou1 gz = new Gou1(1);
    }
}

可以看出优先是无参数的!如果当我们删去无参数的构造方法,那么就会报错,同理即为不能继承有参数构造方法的类!


http://www.kler.cn/news/358318.html

相关文章:

  • C++STL--------list
  • 线性代数基础02
  • HarmonyOS开发(ArkUI简单使用)
  • 【配色网站分享】
  • 掘金2.计算位置 x 到 y 的最少步数(简单01)
  • 【VUE】Vue渲染列表为什么要加key
  • 第 6 章 机器人系统仿真
  • 「OC」YYModel的使用方式
  • QT<28> Qt中对.ini配置文件的读写
  • 使用 Go 构建一个最小的 API 应用
  • Python进阶语法
  • go基础(一)
  • Tars RPC源码--C++客户端
  • jmeter中发送post请求遇到的问题
  • 【优选算法】(第四十四篇)
  • 深入理解程序的编译(预处理操作)和链接
  • python 函数式编程
  • 【【自动驾驶】车辆运动学模型】
  • 表的约束
  • 将任意图像增强模型与ultralytics中任意模型进行结合 (二)| yolo11与gdip模块、ipam的融合实践