封装的定义和几个练习

封装:

什么是封装?

封装是帮助我们更好设计类的一种思想。告诉我们如何正确设计对象的属性和方法。

封装的原则:

对象代表什么,就得封装对应的数据,并提供数据对应的行为。

封装的意义:

让编程变得简单(找对象,调方法)

降低学习成本,不用死记硬背,需要的时候去查找就行,让数据更加安全

封装的步骤:

1 使用private关键字来修饰成员变量。

2 使用public修饰getter和setter方法。

public class Student {
   private int id;
    private String name;
    private String score;

    public String getScore() {
        return score;
    }

    public void setScore(String score) {
        this.score = score;
    }

    public String getName() {
        return name;
    }

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

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

javaBean:

一个类里面的所有成员属性都被私有化,而且提供了get和set方法,我们把这种类叫做JavaBean类(实体类)

封装总结:

封装:隐藏实现细节,仅对外暴露公共的访问方式

将代码抽取到方法中,这是对代码的一种封装

将属性抽取到类中,这是对数据的一种封装

封装的好处:

1 提高了代码的安全性

2 提高了代码的复用性

练习1:

定义一个员工类Employee

    * 自己分析出几个成员,然后给出成员变量

        * 姓名name,工号id,工资salary

    * 构造方法,

        * 空参和有参的

    * getXxx()setXxx()方法,

    * 以及一个显示所有成员信息的方法。并测试

Employee类:

public class Employee {
    String name;
    int id;
    int salary;

    public Employee(String name, int id, int salary) {
        this.name = name;
        this.id = id;
        this.salary = salary;
    }
public void show(){
    System.out.println(this.name);
    System.out.println(this.id);
    System.out.println(this.salary);
}
    public Employee() {
    }

    public String getName() {
        return name;
    }

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

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }
}

测试类:

public class EmployeeShow {
    public static void main(String[] args) {
        Employee xiaoming = new Employee("小明", 123, 12345);
        Employee xiaobai=new Employee("小白",1234,123456);
        xiaoming.show();
        xiaobai.show();
    }

测试结果:

 练习2:

定义一个Hero类

属性有 power,name,分别代表体力值和英雄的名子,体力值默认为100;

方法有

1.void go(); //行走的方法,如果体力值为0,则输出不能行走,此英雄已死亡的信息

2.void eat(int n); //吃的方法,参数是补充的血量,将 n的值加到属性power中,power的值最大为100,

3.void hurt();//每受到一次伤害,体力值-10,体力值最小不能小于0

编写测试类,来测试以上代码

Hero类:

public class Hero {
    int power=100;
    String name;
    public void go(int poewr){
        this.power=poewr;
        if (this.power==0){
            System.out.println("英雄不能行走,已死亡");
        }
    }
    public void eat(int n,int power){
        power=power+n;
        if (power>=100){
            power=100;
        }
        System.out.println(power);
    }
    public void hurt(int n,int power){
        power=power-10*n;
        if (this.power<=0){
            this.power=0;
    }
        System.out.println("剩余血量为"+power);
    }

这里的三个方法我都是分开测试的,也就是每次的血量都是可以根据传的参数值来重新对血量赋值。

测试类:

public class HeroTest {
    public static void main(String[] args) {
        Hero hero = new Hero();
        hero.go(0);
        hero.eat(1,100);
        hero.hurt(6,100);
    }

测试结果:

 练习三:

3、编写自定义类实现图书信息设置

任务:

属性:书名、作者、出版社、价格

方法:信息介绍

要求:

设计构造函数实现对属性赋值

设置私有属性,get/set方法实现对属性的访问

限定图书价格必须大于10,如果无效需进行提示,并强制赋值为10

限定作者、书名均为只读属性

信息介绍方法描述图书所有信息

图书类:

public class Library {
    private  String book="好书";
    private String author="我";
   private String press;
   private int price;

   public void show(){
       System.out.println(book);
       System.out.println(author);
       System.out.println(press);
       System.out.println(price);
   }

    public String getPress() {
        return press;
    }

    public void setPress(String press) {
        this.press = press;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
        if (price<=10){
            System.out.println("输入无效,请重新输入图书价格");
            this.price=10;
        }
    }

    public String getBook() {
        return this.book;
    }

    public String getAuthor() {
        return this.author;
    }
}

测试类:

public class LibraryTest {
    public static void main(String[] args) {
        Library library = new Library();
        String author =library.getAuthor();//作者
        String book =library.getBook();//书名
        library.setPrice(9);
        int price =library.getPrice();
        library.setPress("湖南出版社");
        String press = library.getPress();
        library.show();

    }

测试结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值