小白学Java第二十五日:面向对象-封装

面向对象:封装

回顾基础

  1. 类与对象
    • 类是一个模板是抽象的;对象是一个具体的实例
  2. 方法
    • 定义,调用!
  3. 对应的引用
    • 引用类型:基本类型(8个)
    • 对象是通过引用来操作的:栈(引出模板)------>堆(真实对象是在堆里)
  4. 属性:字段Field ,成员变量
    • 默认初始化
      • 数字(默认):0, 0.0
      • char:u0000
      • boolean: false
      • 引用:null
    • 修饰符 属性类型 属性名 = 属性值! (属性的定义)
  5. 对象的创建和使用
    • 必须使用new,关键字创造对象,构造器:
    • Person yuecheng =new Person();
    • 对象的属性 :yuecheng .name;
    • 对象的方法:yuecheng.sleep();
  6. 类:
    • 静态的属性(属性)
    • 动态的行为(方法)

面向对象: 封装

  • 该露的露,该藏的藏

    • 程序设计要追求“高内聚,低耦合”。
      • 高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
      • 低耦合:仅暴露少量的方法给外部使用
  • 封装(数据的隐藏)

    • 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。、
    • 属性私有,get/set(重点)

    private 关键词

    1. private会将属性私有

    2. 因为属性私有,我们即使new了对象也无法使用这些属性

    3. 所以java提供了可以操作这些属性的方法

    4. 一些 public的get/set方法

    • get:获得这个数据,属性
    • set:给这数据/属性,设置值
  • 记住一个快捷键: ait + insert

    • 自动生成 get/set 方法

    封装初体验

    package com.yuecheng.oop.Demo04;
    
    public class Student {
        // 属性私有
        private String name ;// 名字
    
        private int  id; // 学号
    
        private char sex; //性别
        // 因为属性私有,我们即使new了对象也没办法用这些属性,
        // 所以提供一些可以操作这个属性的方法!
        // 提供一些 public 的 get/set 的方法
    
        // get : 获得这个 数据,属性
        public String getName(){
            return this.name;
        }
    
        // set :给这 数据,属性,设置值赋值
        public void setName(String name){
            this.name = name ;
        }
    
        // alt+ insert 自动生成 get/set 方法的快捷键
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public char getSex() {
            return sex;
        }
    
        public void setSex(char sex) {
            this.sex = sex;
        }
    }
    
    
    package com.yuecheng.oop;
    
    import com.yuecheng.oop.Demo04.Student;
    
    public class Application {
        public static void main(String[] args) {
    
            Student s1 = new Student();
    
            s1.setName("玥骋");
    
            System.out.println(s1.getName());
    
    
    
        }
    }
    

封装有什么用:

  • 1.帮我们过滤 不合法内容(做一些安全性的判断);

    2.提高程序安全性,保护数据;

    3.隐藏代码的实现细节;

    4.统一接口;

    5.系统的可维护性增加。

    //封装可以帮我们过滤一些不合法的数据
        public void setAge(int age) {
            if (age>120||age<0){// 年龄大于120小于0不合法,
                this.age=3;
            }else{
                this.age=age;
            }
        }
    
    

思考为什么 println方法可以输出各种类型?

  • 通过方法的重载
  • println通过方法的重载,有各种的输出类型。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玥骋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值