博客
关于我
习题练习题-第三题
阅读量:719 次
发布时间:2019-03-17

本文共 1765 字,大约阅读时间需要 5 分钟。

类的封装实践

任务描述

编写一个学生类,并根据要求对学生类进行封装。防止外界对类中的成员变量随意访问。名校系统:学生类毕业设计课程设置日五任务。

练习目标

  • 了解为什么要对类进行封装;
  • 掌握如何实现类的封装。
  • 需求分析

    对类进行封装,防止外界对类中的成员变量随意访问。为掌握类的封装,本练习将使用private关键字对学生类的成员变量nameage进行私有化,同时分别提供一个setName(String n)和setAge(int a)方法用于外界的访问,其中setAge(int a)中需要对age进行判断。

    设计思路(实现原理)

    1)对Student类进行修改,将name和age属性使用private修饰,然后定义getName()、setName(String n)、getAge()和setAge(int a)四个对外访问name和age的方法。

    2)在setAge(int a)方法中对传入的参数进行检查,如果输入值为负数,则打印出“设置的年龄不合法”,如果不为负数,才将其设置为age属性的值。

    3)编写测试类,在main()方法中创建Student类的实例对象,通过调用对象的setName(String n)和setAge(int a)方法来设置示例对象的name属性和age属性值,并调用speak()方法。

    测试说明

    测试1:测试输入:小吴,-3;

    预期输出:设置的年龄不合法
    我的名字是小吴,今年0岁

    测试2:测试输入:大强,25;

    预期输出:我的名字是大强,今年25岁

    ###代码

    package task03;import java.util.Scanner;/* * 定义学生类作封装练习 */class Student {    private String name;    private int age;    /* 公共构造函数,初始化name和age */    public Student(String name, int age) {        this.name = name;        this.age = age;    }    /* 公共方法,获取name */    public String getName() {        return name;    }    /* 公共方法,设置name */    public void setName(String name) {        this.name = name;    }    /* 公共方法,获取age */    public int getAge() {        return age;    }    /* 公共方法,设置age,包含参数检查 */    public void setAge(int age) {        if (age < 0) {            System.out.println("设置的年龄不合法");        } else {            this.age = age;        }    }    /* 公共方法,说话 */    void speak() {        System.out.println("我的名字是" + name + ",今年" + age + "岁");    }}/* 测试类 */public class Task03 {    public static void main(String[] args) {        Scanner scan = new Scanner(System.in);        String name1 = scan.next();        int age1 = scan.nextInt();        Student s = new Student();        s.setName(name1);        s.setAge(age1);        s.speak();    }}

    运行结果示例

    测试1输出:

    设置的年龄不合法我的名字是小吴,今年0岁

    测试2输出:

    我的名字是大强,今年25岁

    转载地址:http://qjshz.baihongyu.com/

    你可能感兴趣的文章
    Nginx配置如何一键生成
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    NHibernate学习[1]
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
    查看>>
    NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
    查看>>
    NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
    查看>>
    NIH发布包含10600张CT图像数据库 为AI算法测试铺路
    查看>>
    Nim教程【十二】
    查看>>
    Nim游戏
    查看>>
    NIO ByteBuffer实现原理
    查看>>