java基础知识——private关键字和构造方法

444 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第22天,点击查看活动详情

private关键字

  • private关键字是一个权限修饰符
  • 可以修饰成员
  • 被private修饰的成员只能在本类中才能访问
  • 针对private修饰的成员变量,如果需要被其它类使用,需要提供相应的操作
  • 提供“setXxx(参数)”方法,用于给成员变量赋值,方法用public修饰
  • 提供"getXxx()"方法,用于获取成员变量的值,方法用public修饰

例子见下面这段代码

GirlFriendTest.java

package test;

public class GirlFriend {
    //属性
    private String name;
    private int age;
    private String gender;
    //针对于每一个私有化的成员变量,都要提供get和set方法
    //set方法:给成员变量赋值
    //get方法:对外提供成员变量的值
    public void setName(String n){
        name=n;
    }
    public String getName(){
        return name;
    }

    //age
    //setAge:给成员变量age进行赋值的
    //getAge:对外提供成员变量age的值
    public void setAge(int a){
        if(a>=18 && a<=50){
            age=a;
        }else{
            System.out.println("年龄超出范围");
        }
    }
    public int getAge(){
        return age;
    }
    //gender
    public void setGender(String g){
        gender=g;
    }
    public String getGender(){
        return gender;
    }

    //行为
    public void sleep(){
        System.out.println("女朋友在睡觉");
    }
    public void eat(){
        System.out.println("女朋友在吃饭");
    }



}

GirlFriend.java

package test;

public class GirlFriendTest {
    public static void main(String[] args){
        GirlFriend gf1=new GirlFriend();
        gf1.setName("蕊蕊");
        gf1.setAge(18);
        gf1.setGender("萌妹子");
        System.out.println(gf1.getName());
        System.out.println(gf1.getAge());
        System.out.println(gf1.getGender());
        
        gf1.eat();
        gf1.sleep();
    }
}

this关键字

就近原则

当成员变量和局部变量名字重复的时候,遵循就近原则来进行赋值

System.out.println(age);
System.out.println(this.age);

上面这个代码中,第一行的age是根据就近原则来的,打印的是局部变量的age,而下边的打印的则是成员变量。

this关键字的作用就是区别成员变量和局部变量

构造方法

定义

  • 如果没有定义构造方法,系统将给出一个默认的无参数构造方法
  • 如果定义了构造方法,系统将不再提供默认的构造方法

构造方法重载

  • 带参构造方法和无参构造方法,两者的方法名相同,但是参数不同,这就叫构造方法的重载

推荐使用:无论是否使用,都手动书写无参数构造方法(空参),和带全部参数的构造方法。

作用

创造对象的时候,由虚拟机自动调用,给成员变量进行初始化的

分类

  • 无参数构造方法:初始化对象的时候,成员变量的数据均采用默认值
  • 有参数构造方法:在初始化对象时,同时可以为对象进行赋值

“构造方法是用来创建对象的”

这句话大错特错,创造对象的时候,虚拟机会自动调用构造方法,作用是给成员变量进行初始化的