【Java自学】搬砖中年人代码自学之路Lesson 8


这一堂课听的最多的一句话就是「这部分先了解就可以,后面到了xxx的时候会深入的讲」,就给人一种后面还有茫茫多的只是要学习一样。。。。

不过今天学的这些东西自己倒是能听懂,唯独就是后面的练习题,在各种点来点去的时候,会搞不清楚测试的顺序,创建类什么的都已经ok了,但是就是在使用调用的时候会受忙脚乱,不知道该怎么调用,或者说不知道该调用谁再调用谁,这个估计后面还得多练练才能搞清楚,脑子慢真心伤不起

在就是免费课确实没有付费课香,这么多的资料全都得自己手动敲下来,而不是像人家一样直接点开文件夹拿出报名时候给到的压缩包就好,这个还是比较不爽的。但是这段时间敲英文字的水平确实是有进步,打字快了好多,而且确实还挺快乐的。但是学会了eclipse里面的快速创建构造器、setter和getter的快捷方式的时候,瞬间感觉打字不香了。


🇺🇳        封装性——"我要用洗衣机,只需要按一下开关和洗涤模式就可以了,有必要了解洗衣机内部的结构么?有必要碰电动机么?"

一、我们程序涉及追求"高内聚,低耦合"

> 高内聚:类的内部数据操作细节自己完成,不允许外部干涉

> 低耦合:仅对外暴露少量的方法用于使用

二、隐藏对象内部的复杂性,只对外公开简单的接口,便于外界调用,从而提高系统的可扩展性、可维护性。

        通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想

三、面向对象的特征一:封装与隐藏

        1、问题的引入

                > 当我们创建一个类的对象以后,我们可以通过"对象.属性"的方式,对对象的属性进行赋值。

                   这里,赋值操作要受到属性的数据类型和存储范围的制约,除此之外,没有其他制约条件

                   但是,在实际问题中,我们往往需要给属性赋值加入额外的限制条件,这个限制条件就不能在属性声明时体现,

                   只能通过方法进行限制条件的添加(比如下面写的setLegs())

                   同时,我们需要避免用户再使用"对象.属性"的方式对属性进行赋值,则需要将属性声明为私有的(private)

                   此时,针对属性就体现了封装性

public class AnimalTest{
    public static void main(String[] args){
        Animal test = new Animal();
        test.name = "大黄";
        test.setLegs(6);
        test.show();
    }
}
class Animal{
    String name;
    private int age;
    private int legs;

    //对于属性的设置
    public void setLegs(int l){
        if(l >= 0 && l % 2 ==0){
            legs = l;
        }else{
            legs = 0;
        }
    }

    //对于属性的获取
    public int getLegs(){
        return legs;
    }

    public void eat(){
        System.out.println("动物进食");
    }
    public void show(){
        System.out.println("name = " + name + ",age = " + age + ",legs = " + legs);
    }
}

                        > 属性赋值的先后顺序

                                > 默认初始化值

                                > 显式初始化

                                > 构造器中初始化

                                ⬆️上面三个操作只执行一次

                                > 通过"对象.set方法"或者"对象.属性"的方式进行赋值

                                ⬆️这条操作是可以反复执行的

                                以上操作的先后顺序: 1 - 2 - 3 - 4

public class UserTest{
    public static void main(String[] args){
        User u = new User();
        System.out.println(u.age);

        User u1 = new User(2);
        u1.setAge(3);
        System.out.println(u1.age);
    }
}
class User{
    String name;
    int age;

    public User(){

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值