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

Posted 韶光不负

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了慢慢学习,然后惊呆所有人(构造器,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<Student> 
    //姓名
    private String name;
    //性别
    private String sex;
    //年龄
    private int age;
    //分数
    private double score;

    public Student() 
        //无参构造
    



有参构造



import java.util.Objects;


public class Student implements Comparable<Student> 
    //姓名
    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<Student> 
    //姓名
    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<Student> 
    //姓名
    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<Student> 
    //姓名
    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 +
                '';
    

以上是关于慢慢学习,然后惊呆所有人(构造器,this关键字)的主要内容,如果未能解决你的问题,请参考以下文章

慢慢学习,然后惊呆所有人(Arrays类)

慢慢学习,然后惊呆所有人(八,异常)

慢慢学习,然后惊呆所有人(三.1,java的数据类型方法补充)

慢慢学习,然后惊呆所有人(数组)

慢慢学习,然后惊呆所有人(六 面向对象)

慢慢学习,然后惊呆所有人(五,函数,附加小练习)