JAVA面向对象基础(封装与继承1)

面向对象三大特征之一 —— 封装

什么是封装

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提 供的方法来实现对隐藏信息的操作和访问
大致原则
1、把尽可能多的东西藏起来,对外提供便捷的接口
2、把所有的属性藏起来
为什么用封装:
屏蔽方法的复杂性
增强的代码的安全性
减少代码的耦合度

如何实现封装:

在这里插入图片描述
封装的好处:
1、便于使用者正确使用系统,防止错误修改属性
2、有助于系统之间的松耦合,提高系统独立性
3、提高软件的可重用性
4、降低了构建大型系统的风险

总结:

1、属性 -private
2、添加对应的setter/getter
3、对属性合法值进行判断

练习封装

使用封装实现男朋友系统的男朋友类正确输入健康值和亲密度
保证健康值的有效性(0-100),否则取默认值60
保证亲密度的有效性(0-100),否则取默认值60

package day01;

public class BoyFriend {
    
    
    //属性 身高 年龄   籍贯  健康值   亲密度
    private  String name="洪七公";
    private  int  height=184;
    private  int  age=54;
    private  String address="华山";
    private  int  health=80;
    private  int  love=100;

    //通过快捷键 对所有的属性生成 get和 set 方法


    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getHeight() {
    
    
        return height;
    }
    //设置身高
    public void setHeight(int height) {
    
    
        if (height<100||height>300){
    
    
            this.height=180;
        }else{
    
    
        this.height = height; }
        }

    public int getAge() {
    
    
        return age;
    }
    //设置年龄
    public void setAge(int age) {
    
    
        if (age<10||age>100){
    
    
            this.age=21;
        }else{
    
    
        this.age = age;}
}

    public String getAddress() {
    
    
        return address;
    }

    public void setAddress(String address) {
    
    
        this.address = address;
    }

    public int getHealth() {
    
    
        return health;
    }
    //设置健康属性
    public void setHealth(int health) {
    
    
        if (health<0||health>100){
    
    
            this.health=60;
        }else{
    
    
            this.health = health;
        }
    }

    public int getLove() {
    
    
        return love;
    }
    //设置亲密度
    public void setLove(int love) {
    
    
        if (love<0||love>100){
    
    
            this.love=60;
        }else{
    
    
            this.love = love;
        }

    }

    public void print(){
    
    
        System.out.println("我叫:"+name);
        System.out.println("身高:"+height);
        System.out.println("年龄:"+age);
        System.out.println("来自:"+address);
        System.out.println("健康值:"+health);
        System.out.println("亲密度:"+love);
    }
}

package day01;

import java.util.Scanner;

public class Testbf {
    
    
    public static void main(String[] args) {
    
    
        BoyFriend bf = new BoyFriend();
        bf.print();

        System.out.println("===========修改后的内容=========");
        Scanner input = new Scanner(System.in);
        //设置姓名
        System.out.print("请输入你男朋友的姓名:");
        String name = input.next();
        //接收键盘的姓名赋值到封装的set 方法中
        bf.setName(name);

        //设置身高
        System.out.print("请输入你男朋友的身高:");
        int height = input.nextInt();
        //接收键盘的身高赋值到封装的set 方法中
        bf.setHeight(height);

        //设置姓名
        System.out.print("请输入你男朋友的年龄:");
        int  age=input.nextInt();
        //接收键盘的姓名赋值到封装的set 方法中
        bf.setAge(age);

        System.out.print("请输入你和男朋友的亲密度:");
        int  love =input.nextInt();
        //接收键盘的姓名赋值到封装的set 方法中
        bf.setLove(love);

        System.out.print("请输入你男朋友的健康值:");
        int   health=input.nextInt();
        //接收键盘的姓名赋值到封装的set 方法中
        bf.setHealth(health);

        System.out.print("请输入男朋友的地址:");
        String address =input.next();
        //接收键盘的姓名赋值到封装的set 方法中
        bf.setAddress(address);


        bf.print();
    }
}

结果展示
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yangyingjian123/article/details/113145075