假设认识Java的第六天——封装、this关键字

封装:

面向对象语言就是对我们客观世界的模拟,客观的世界的成员变量都是隐藏在对象的内部的,外界无法访问(操作和修改),封装可以被认为就是一个保护屏障,防止该类的代码和数据被其他的类随意访问。要访问该数据,必须通过指定的方法,适当的封装可以让我们的代码容易理解和维护,也加强了代码的安全性。

原则:

将属性隐藏起来,如果想要访问我们的某一个属性,提供公共的方法对你访问。

封装的操作-----private关键字

Private含义:
1、它是一个权限修饰符
2、可以修饰成员变量和成员方法
3、被private关键字修饰后的成员变量和成员方法,只能在本类中使用

private的使用格式:

1、使用priavte关键字修饰我们的成员变量。

public class Dome01 {
    //手机类
    public class Phone{
        //成员变量
        private String brand;//品牌
        private int price;//价格
        private String color;//颜色
    }
}

2、提供get和set方法,可以访问我们的成员变量:

public class Student {
    //成员变量
private String username;
private int age;
//外界调用我的方法获取成员变量
    public String getUsername() {
        return username;
    }
    //外界调用我这个方法给我的成员变量赋值
    public void setUsername(String n) {
        username = n;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int a) {
        age = a;
    }
}

封装的优化1-----this关键字

public class Student {
    //成员变量
private String username;
private int age;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        username = username;
    }
}
public class Dome02 {
    public static void main(String[] args) {
        Student student=new Student();
        student.setUsername("zhangsan");
        System.out.println(student.getUsername());
    }
}
//结果:null

经过我们上面测试,发现了一个新的问题,成员变量赋值失败了,在修改set方法的形式参数,方法并没有给成员变量赋值这是由于形式变量和成员变量重名,导致成员变量名被隐藏,方法中的变量名,无法访问成员变量,从而导致赋值失败,所以我们引出来一个this关键字,来解决重名的问题

this关键字

This代表当前类的对象的引用(地址值),即对象自己的引用
记住:方法被哪个对象调用,方法中的this就代表这个对象,
使用this关键修饰方法变量,解决一下我们的成员变量被隐藏的问题:

public class Student {
    //成员变量
private String username;
private int age;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

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

封装的优化-----构造方法:

当我们创建对象的时候,构造方法用来初始化该对象,给对象的成员变量赋值初始化。
注意:无论你是否自定义构造方法,所有的类都有构造方法,因为java自动帮你提供了一个无参构造

public class Student {
    //成员变量
private String username;
private int age;
public Student(){

}
public Student(String username,int age){
    this.username=username;
    this.age=age;
}
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
public class Demo03 {
    public static void main(String[] args) {
        Student student1=new Student();//无参构造
        Student student2=new Student("wang",12);//有参构造
    }
}

注意事项:

1、如果你不提供构造方法,系统默认给你一个无参构造
2、如果你提供了构造方法,系统将不会再给你提供一个无参构造
3、构造方法是可以重载的,既可以定义参数,也可以不定义参数

标准代码:

JavaBean 是java语言编写类的时候一个标准规范,符合我们javaBean的类,要求类必须是具体的和公共的,并且提供了有参和无参构造方法,提供用来操作成员变量的get和set方法

public class Student{
//成员变量
//构造方法
//无参构造方法[必须]
//有参构造方法【建议】
//成员方法
//getxxx()
//setxxx()
}
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值