栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

慢慢学习,然后惊呆所有人(构造器,this关键字)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

慢慢学习,然后惊呆所有人(构造器,this关键字)

此篇文章是对自己一个Java专题的内容进行补充,欢迎大家观看与评论小编的博客,如果喜欢小编的博客也不要忘了关注与收藏哦!

目录

 new到底对对象做了什么?

创建对象的过程

构造器(一般在类属性下)

无参构造

this关键字

this永远指向调用它的“当前实例对象”

this方法访问构造器(一个构造器访问另外一个构造器,this当构造器只能放在第一行)

setter与getter方法

当你发现属性进行私有化后,程序的安全性提高了,但是当你需要进行修改与查看属性的需求时候怎么办?

setter与getter方法查看与修改属性

一个完整的Javabean


 new到底对对象做了什么?

Java在new一个对象的时候,先会查看对象的所属类,有没有加载到内存当中,没有的话会经过名称加载到内存当中。加载并初始化完成后,进行创建工作。

创建对象的过程

1,在堆中分配对象需要内存。

2,对所有的实例变量都是默认值,

3,执行构造方法(类加载到内存当中是放在方法区中)

4,在栈区定义引用变量,然后把堆中的对象地址赋值给引用变量。

构造器(一般在类属性下)

构造器有时也称为构造方法,当我们new创建一个对象时,jvm就会白送我们一个构造器(一个无参无方法体的构造器),自己写了就不送了。

无参构造

import java.util.Objects;


public class Student implements Comparable {
    //姓名
    private String name;
    //性别
    private String sex;
    //年龄
    private int age;
    //分数
    private double score;

    public Student() {
        //无参构造
    }


}

有参构造


import java.util.Objects;


public class Student implements Comparable {
    //姓名
    private String name;
    //性别
    private String sex;
    //年龄
    private int age;
    //分数
    private double score;

    public Student(String name, String sex, int age, double soore) {
        //有参构造
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.score = score;
    }

}

this关键字

this永远指向调用它的“当前实例对象”

重要内容:每一个方法都会默认传入一个变量this,它永远指向调用它的“当前实例对象”。(this是方法的)

 当类不被调用时,this也不知道自己指向谁

this方法访问构造器(一个构造器访问另外一个构造器,this当构造器只能放在第一行)

import java.util.Objects;


public class Student implements Comparable {
    //姓名
    private String name;
    //性别
    private String sex;
    //年龄
    private int age;
    //分数
    private double score;


    public Student() {
        //无参构造
        this("xiaoming","男",18,88); //使用无参构造访问有参构造
        System.out.println("this当构造器只能放在第一行");
    }

    public Student(String name, String sex, int age, double soore) {
        //有参构造
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.score = score;
    }

   
}

setter与getter方法

当你发现属性进行私有化后,程序的安全性提高了,但是当你需要进行修改与查看属性的需求时候怎么办?

这个时候我们就需要使用方法来进行修改与查看方法。

setter与getter方法查看与修改属性

get方法统一来获取对象的属性(可以按照要求来实现格式化数据)

set方法统一来修改对象的属性(限制于校验方法传入的参数,隐藏对象的内部数据结构)


import java.util.Objects;

public class Student implements Comparable {
    //姓名
    private String name;
    //性别
    private String sex;
    //年龄
    private int age;
    //分数
    private double score;

    //重写TreeSet的比较规则
    @Override
    public int compareTo(Student other){
        return this.age-other.age;
    }

    public Student() {
        //无参构造
        this("xiaoming","男",18,88);
        System.out.println("this当构造器只能放在第一行");
    }

    public Student(String name, String sex, int age, double soore) {
        //有参构造
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.score = score;
    }

    //生成get方法
    public String getName() {
        return name;
    }

    public String getSex() {
        return sex;
    }

    public int getAge() {
        return age;
    }

    public double getScore() {
        return score;
    }

    //生成set方法
    public void setName(String name) {
        this.name = name;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setScore(double score) {
        this.score = score;
    }

   
}

一个完整的Javabean

JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。

 


import java.util.Objects;

//一个完整的javaBean
public class Student implements Comparable {
    //姓名
    private String name;
    //性别
    private String sex;
    //年龄
    private int age;
    //分数
    private double score;

  

    public Student() {
        //无参构造
        this("xiaoming","男",18,88);
        System.out.println("this当构造器只能放在第一行");
    }

    public Student(String name, String sex, int age, double soore) {
        //有参构造
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.score = score;
    }

    //生成get方法
    public String getName() {
        return name;
    }

    public String getSex() {
        return sex;
    }

    public int getAge() {
        return age;
    }

    public double getScore() {
        return score;
    }

    //生成set方法
    public void setName(String name) {
        this.name = name;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setScore(double score) {
        this.score = score;
    }


    //生成toString方法
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + ''' +
                ", sex='" + sex + ''' +
                ", age=" + age +
                ", score=" + score +
                '}';
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/643694.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号