资讯专栏INFORMATION COLUMN

乐字节Java构造器(构造方法|构造函数)、方法与内存分析

wangshijun / 1669人阅读

摘要:一构造器构造方法构造函数在创建对象时必会调用一个特殊的方法,这个方法是初始化对象信息的为服务的。构造函数与类同名且没有返回值。

一、 构造器(构造方法|构造函数)

在创建对象时(new),必会调用一个特殊的方法,这个方法是初始化对象信息的为new服务的。这个方法称为“构造器”

使用 new + 构造方法创建一个新的对象。

构造函数是定义在 Java类中的一个用来初始化对象的函数。

构造函数与类同名且没有返回值。

例如: Person类的构造函数:

public class Person {
    int id;
    int age;
    Person(int n, int i){
        id = n;
        age = i;
    }
}

创建对象时,使用构造函数初始化对象的成员变量

public class Test {
    public static void main(String[] args) {
        Person tom = new Person(1, 18);
        Person jeck = new Person(2, 20);
    }
}
二、构造方法的特点:

1) 名称必须和类名一致,与类名相同

2) 没有返回类型|void

3) 构造器可以存在return,return有选择的跳出构造器

4) 不能随便调用,和new在一起使用,其他时候不能调用

5) 修饰符不能为 final abstract static

作用:

初始化对象信息,不是用于创建对象的

空构造:

没有参数的构造器、无参构造

1) 一个类中,如果没有显示|手动 加入 任意构造器 javac编译后 自动加入空构造

2) 一旦加入构造器, javac 不会加入空构造器

三、方法的重载

方法的重载是指一个类中可以定义有相同的方法名,但参数不同的多个方法。调用时,会根据不同的参数列表选择对应的方法。

四、构造方法的重载

与普通方法一样,构造方法也可以重载

例子如下:

五、 引用与内存分析

A:一个对象的内存图

B:二个对象的内存图

C:三个对象的内存图

内存分析

划分

引用的特点:

1) 同一时刻一个一引用只能指向一个对象

2) 一个对象可以被多个引用所指向,其中一个对其进行更改,该对象的其他引用也可见该变化

3) Java一切为值传递,引用拷贝地址

约定俗成的命名规则

类名的首字母大写

变量名和方法名的首字母小写

运用驼峰标识

例子:

public class Cat {
    String color; // 毛的颜色
    String name; // 名称
    public void chase(Mice mice){
        mice.type = "jerry"; // 改变
        System.out.println(name + " 逮 " + mice.type);
    }
    public static void main(String[] args) {
        // 引用  与内存分析(运行期为--》数据的流向)
        Cat cat = new Cat();
        cat = new Cat();    
// 引用发生变化,同一个时刻一个引用只能指向一个对象
        cat.color = "黑色";
        cat.name = "tom";
        Mice mice = new Mice();
        mice.type = "米奇";
        // 将二者联系起来  --》 依赖
        cat.chase(mice);    
// 传递时,值拷贝,拷贝地址,拷贝完成后   一个对象被多个引用所指向
        System.out.println(mice.type);  
// jerry 其中一个对其发生变化,该对象的其他引用也可减该变化
    }
}
class Mice{
    String type;
}

定义如下类

public class BirthDate {
    int day;
    int month;
    int year;
    public BirthDate(int d, int m, int y){
        day = d;
        month = m;
        year = y;
    }
    void setDay(int d){
        day = d;
    }
    void setMonth(int m){
        month = m;
    }
    void setYear(int y){
        year = y;
    }
    int getDay(){
        return day;
    }
    int getMonth(){
        return month;
    }
    int getYear(){
        return year;
    }
    void display(){
        System.out.println(day + "-" + month + "-" + year);
    }
}

测试类:

public class Test {
    public static void main(String[] args) {
        Test test = new Test();
        int date = 9;
        BirthDate d1 = new BirthDate(7,7,1970);
        BirthDate d2 = new BirthDate(1,1,2000);
             test.change1(date);
             test.change2(d1);
             test.change3(d2);
             System.out.println(date); 
             System.out.println(d1);
             System.out.println(d2);
    }
    void change1(int i){
        i = 1234;
    }
    void change2(BirthDate b){
        b = new BirthDate(22,2,2004);
    }
    void change3(BirthDate b){
        b.setDay(22);
    }
}

总结:

对象的创建和使用,必须使用new 关键字创建对象,使用对象引用.成员变量来引用对象的成员变量,使用对象引用.方法(参数列表)来调用对象的方法。

同一类的每个对象有不同的成员变量存储空间,同一类的每个对象共享该类的方法,

非静态方法是针对每个对象进行调用 。

乐字节原创,转载请注明出处。请继续关注乐字节

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75495.html

相关文章

  • 字节Java编程语言发展、面向对象和类

    摘要:二面向对象概述面向过程的设计思想和面向对象的设计思想我要吃鱼香肉丝盖饭面向过程我买菜我洗菜我切菜我放水我点火我做饭我炒菜。。。。 大家好,上次我们讲过了乐字节Java编程之方法、调用、重载、递归,接下来我们将会进入到Java封装的内容。Java编程语言发展,面向对象和类。 一、编程语言的发展 机器语言——直接由计算机的指令组成,指令、数据、地址都以0和1组成:可以被计算机直接识别并执行...

    lufficc 评论0 收藏0
  • 字节Java继承-方法重写、super和final关键字

    摘要:大家好,乐字节的小乐又来了,上一篇是乐字节继承与权限修饰,也是属于继承的,今天继续继承方法重写和关键字。三关键字表示最终的。修饰类,表示该类不能被继承修饰方法,表示该方法不能被重写修饰属性,表示常量,值一旦确定不可改变。 大家好,乐字节的小乐又来了,上一篇是:乐字节Java|JavaBean、继承与权限修饰,也是属于Java继承的,今天继续Java继承-方法重写、super和final...

    trigkit4 评论0 收藏0
  • 字节-Java8新特性之方法引用

    摘要:上一篇小乐介绍了新特性函数式接口,大家可以点击回顾。中引入方法引用新特性用于简化应用对象方法的调用,方法引用是用来直接访问类或者实例的已经存在的方法或者构造方法。方法引用是一种更简洁易懂的表达式。 上一篇小乐介绍了《Java8新特性-函数式接口》,大家可以点击回顾。这篇文章将接着介绍Java8新特性之方法引用。 Java8 中引入方法引用新特性,用于简化应用对象方法的调用, 方法引用是...

    Codeing_ls 评论0 收藏0
  • 字节Java|this关键字、static关键字、block块

    摘要:在成员方法中或构造器中隐式的传递。作用如下在构造器中只能放在第一行属性避免属性和形参局部变量同名,发生就近原则实参列表构造器的首行调用其他构造器。关键字静态的公共的。构造块,先于构造器执行,每创建一个对象执行一次。 大家好,我是乐字节的小乐,从本文开始将会给大家讲述Java继承,一下是Java继承的知识图谱:showImg(https://segmentfault.com/img/bV...

    _DangJin 评论0 收藏0
  • 字节Java反射之二:实例化对象、接口父类、修饰符和属性

    摘要:大家好,小乐继续接着上集乐字节反射之一反射概念与获取反射源头这次是之二实例化对象接口与父类修饰符和属性一实例化对象之前我们讲解过创建对象的方式有克隆反序列化,再加一种,根据对象,使用或者构造器实例化对象。 大家好,小乐继续接着上集:乐字节Java反射之一:反射概念与获取反射源头Class 这次是之二:实例化对象、接口与父类、修饰符和属性 一:实例化对象 之前我们讲解过创建对象的方式,有...

    xietao3 评论0 收藏0

发表评论

0条评论

wangshijun

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<