首页 > 其他分享 >14-面向对象-构造方法(构造器)

14-面向对象-构造方法(构造器)

时间:2023-08-04 09:33:49浏览次数:28  
标签:String 构造方法 构造 name 面向对象 默认 public 14

构造方法/构造器

构造方法又叫构造器(constructor),是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。

基本语法

修饰符 方法名(形参列表){

         方法体;

}

a) 构造器的修饰符可以是默认的,也可以是public 、protected 、private

b) 构造方法没有返回值

c) 方法名 和 类名 必须一样

d) 参数列表 和 成员方法一样的规则

e) 构造器的调用由系统完成,也就是说在创建对象时,系统会自动的调用该类的构造器完成对对象的初始化

练习:在创建人类对象时,使用构造器直接指定人类对象的年龄和姓名

public class Constructor01 {
    public static void main(String[] args){

        //当new一个对象时,直接通过构造器指定名字和年龄
        Person3 p = new Person3("马铃薯", 26);
        System.out.println("name = " + p.name + "\tage = " + p.age);
    }
}

//在创建人类的对象时,就直接指定这个对象的年龄和姓名
class Person3{
    //属性(成员变量,全局变量)
    String name;
    int age;
    //构造器,完成对新对象的初始化
    //1. 构造器没有返回值,也不能写void
    //2. 构造器的名称和类Person一样
    //3. (String pName, int pAge) 是构造器的形参列表,规则和成员方法一样
    public Person3(String pName, int pAge){
        System.out.println("====构造器被调用,完成对象的初始化=====");
        name = pName;
        age = pAge;
    }
}

构造器的注意事项和使用细节

1) 一个类可以定义多个不同的构造器,即构造器重载

public class ConstructorDetail {
    public static void main(String[] args){

        Person4 p1 = new Person4("马铃薯", 26);
        Person4 p2 = new Person4(26, "马铃薯");
    }
}

class Person4{
    //属性(成员变量,全局变量)
    String name;
    int age;
    //第一个构造器
    public Person4(String pName, int pAge){
        System.out.println("====第1个构造器被调用,完成对象的初始化=====");
        name = pName;
        age = pAge;
    }
    //第二个构造器
    public Person4(int pAge, String pName){
        System.out.println("====第2个构造器被调用,完成对象的初始化=====");
        age = pAge;
        name = pName;
    }
}

2) 构造器名和类名必须相同

3) 构造器没有返回值

4) 构造器是完成对象的初始化,并不是创建对象

5) 在创建对象时,系统会自动的调用该类的构造方法

6) 当没有定义构造方法时,系统会自动给类生成一个默认的无参构造方法(也叫默认构造方法)

public class Constructor02 {
    public static void main(String[] args){
        //当创建对象时就是调用默认的构造方法
        Dog d = new Dog();
    }
}

class Dog{
    //如果程序员没有定义构造器,系统会自动给类生成一个默认无参构造器(也叫默认构造器)
    //使用javap指令,反编译看看
    /*
        默认构造器
        Dog{

        }
   */
}

7) 定义了自己的构造器,默认的构造器就覆盖了,不能再使用默认的无参构造器,要使用需要显式定义一下(这点很重要)

public class Constructor03 {
    public static void main(String[] args){

        //使用默认的无参构造器
        Dog2 d = new Dog2();
    }
}

class Dog2{
    String name;

    //定义了自己的构造器,默认的构造器就覆盖了
    //需要显示定义
    public Dog2(){

    }

    //自己定义构造器
    public Dog2(String dName){
        name = dName;
    }
}

 

标签:String,构造方法,构造,name,面向对象,默认,public,14
From: https://www.cnblogs.com/REN-Murphy/p/17604944.html

相关文章

  • 耗时四年,我们写了一本1400页的AI全栈技术手册
    不知不觉写文章已经四年了。最开始是一个人,后来恰了恰饭,就招揽了很多比小夕厉害的小伙伴一起写。不知不觉已经积累了300多篇了。。三年以来,我跟小伙伴们原创的300+篇深度学习、NLP、CV、知识图谱、跨模态等领域的入门资料、子方向综述、2018~2022学术前沿解读、工业界炼丹经验与算......
  • ubuntu18.04安装nodejs最新版、指定版 12.x 14.x
    ubuntu18.04安装nodejs最新版、指定版12.x14.x 今天准备在ubuntu服务器里面安装nodejs版本,ubuntu18.04仓库nodejs默认是8.x版本。1.通过apt安装nodejs在Ubuntu18.04的默认仓库包含了一个Node.js的版本,截至当前,该仓库的node.js版本是8.10.0。要安......
  • 13-面向对象-可变参数
    一、可变参数1.基本概念Java允许将同一个类中多个同名同功能,但参数个数不同的方法,封装成一个方法,就可以通过可变参数实现。2.基本语法访问修饰符返回类型方法名(数据类型...形参名){方法体;}publicclassVarParameter01{publicstaticvoidmain(Stri......
  • web渗透测试(14):文件上传漏洞
    在本节中,我们将介绍如何使用文件上载功能来获取代码。 在Web应用程序(尤其是使用文件系统来确定应运行哪些代码的应用程序)中,如果您设法上传具有正确文件名的文件(通常取决于扩展名),则可以在服务器上执行代码。在本节中,我们将看到这些类型的攻击的基础知识。 首先,由于我们正在开......
  • 12-面向对象-方法重载(OverLoad)
    基本介绍重载(Overload):指一个类中可以有多个方法具有相同的名字,但这些方法的参数不同(参数的类型和个数不同)即在Java中允许同一个类中,多个同名方法的存在,但要求形参列表不一致!publicclassOverLoad01{publicstaticvoidmain(String[]args){MyCalculatormc......
  • 佳能 打印机 L140/160 驱动下载
    FAX-L140/L160https://www.canon.com.cn/supports/download/sims/list/slist?fileTypeId=23&categoryId=12&seriesId=78&modelId=1192&OSName=Windows10(x64)&channel=1https://www.canon.com.cn/supports/download/simsdetail/0100825701.html?model......
  • 面向对象编程基础
    欢迎来到C#语言入门指南的第二篇博客!在前一篇博客中,我们了解了C#语言的基本概念和历史,并成功编写了您的第一个C#程序。今天,我们将深入探讨面向对象编程(Object-OrientedProgramming,OOP)的基础知识。OOP是一种常用的编程范式,它将数据和操作数据的方法组织成对象,以便更好地模拟现实世......
  • 音视频技术开发周刊 | 140
    架构 为什么您的视频会议系统不互相集成主要是因为当大多数公司希望成为SaaS或者云供应商时,以至于没有动力去实现。https://www.theverge.com/2020/4/1/21202945/zoom-alternative-conference-video-free-app-skype-slack-hangouts-jitsi 到目前为止,Zoom安全和隐私缺陷和问题,......
  • CF1468N 题解
    洛谷链接&CF链接题目简述共有\(T\)组数据,对于每组数据:有三个桶,五种垃圾,每个桶有固定的容量。前三种垃圾分别放入三种桶中,第四种垃圾可以放进\(1,3\)桶中,第五种垃圾可以放进\(2,3\)桶中。问题:对于给定的桶容量和垃圾量,请问垃圾是否可以全部放入桶中?思路简单贪心题。......
  • [刷题笔记] Luogu P1466 [USACO2.2] 集合 Subset Sums
    ProblemDescription有一个长度为\(n\)的数组为\(1-n\),求有多少种选择方案使得选择数之和等于序列和的一半Solution题面翻译成这样是不是就好做了?首先,序列和的一半我们可以计算出\(n\times(n+1)\div2\div2\),显然序列和的一半只有是整数才有解,如果不是整数直接输出0即可。......