day08-09 Java 面向对象 封装 this 构造方法


设计稿在桌上,一叠伟大梦想
当成这些卖不出去公仔的床




一、封装

1、什么是封装

指隐藏对象的属性和实现细节,仅对外提供公共访问方式

2、封装的优点

隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性。

3、private 关键字

是一个权限修饰符
可以修饰成员变量和成员方法
被 private 修饰的成员只能在本类中才能访问

4、封装方法

//创建一个三个成员变量为 private 的类
class Character{
    private String name;
    private int level;
    private int money;
    
    public void setName(String a){
        name = a;
    }
    public void setLevel(int l){
        level = l;
    }
    public String getName(){
        return name;
    }
}

public class TestCharacter {
    public static void main(String[] args) {
        Character fgh = new Character();
        fgh.setName("fgh");
        fgh.setLevel(50);
        String a = fgh.getName();
        //此处只能通过调用方法来达到修改成员变量的目的,无法通过直接访问来修改
        fgh.name = "fgh";
        //如该语句,将会报错
    }
}

二、细枝末节

1、this 关键字

在上述代码中,存在

public void setLevel(int l){
        level = l;

类似此类的写法,为了更加方便使用变量,我们会希望能否通过局部变量 level 来赋值成员变量 level 。二根据变量引用的就近原则,同时出现两个 level 名变量是无意义的,因此出现关键 this 来处理这一情况。

this

1、是对当前对象引用。谁调用类中的方法,那个方法内的this就代表谁
2、如果在一个方法中访问了一个变量,该变量只存在成员变量的情况下,那么java编译器会默认在该变量的前面添加this关键字

public void setLevel(int level){
        this.level = level;

这是对上述代码的改写。当通过调用 setLevel 方法对当前对象的成员变量进行赋值时,如对象 a ,此时 this 会指向对象 a ,达到对 a 的成员变量进行赋值的目的。
this 关键字解决了局部变量和成员变量同名的问题,隐藏成员变量
使用 this 时的内存使用情况
请添加图片描述

2、构造方法

在创建对象时

Character fgh = new Character();

这里的 Character() 正是我们用到的构造方法。但是之前在类中并没有看到相关的定义,我们却可以调用它。是因为当没有主动定义构造方法时,系统会默认生成一个没有参数构造方法供使用者使用。

构造方法

给对象的数据进行初始化。具有如下特征
  1、方法名与类名相同
  2、无返回值,因此也无返回值类型的修饰词
  3、当没有提供构造方法,系统会默认生成一个无参数的构造方法
  4、当提供了构造方法,系统将不会提供默认生成的构造方法
  5、构造方法可以重载

class Character{
    private String name;
    public Character(){
    }                    //若未主动提供,系统将自动生成的构造方法
    public Character(String name) {
        this.name = name;   
    }                   //主动提供的带形参的构造方法,可以提前赋值变量 name
}   



总结

面向对象
封装

this 关键字

构造方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值