习题练习题-第三题

类的封装

任务描述:编写一个学生类,并根据要求对学生类进行封装

练习目标
1.了解为什么要对类进行封装;
2. 掌握如何实现类的封装;

需求分析
对类进行封装,防止外界对类中的成员变量随意访问。
为了掌握类的封装,本练习将使用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;

/*
 * 说明:根据提示,补充完整 begin 和 end 之间的代码。
 *     (其他代码可以不用改)
 */

/**************** begin *****************/
// 在此定义学生类名
class Student
/**************** end *****************/
{
	/**************** begin *****************/
	 // 将名字name和年龄age属性定义为私有的
    private String name;
    private int age;
    public Student(String name,int age){
        this.name=name;
        this.age=age;
    }
    public Student(){}
	/**************** end *****************/

	/**************** begin *****************/
	/*
	 * 定义4个公有的方法:getName()、setName(String n)、
	 * getAge()和setAge(int a),
	 * 用于对外访问name和age。
	 *
	 * 在setAge(int a)方法中对传入的参数进行检查,
	 * 如果输入值为负数,则打印出“设置的年龄不合法”,
	 * 如果不为负数,才将其设置为age属性的值。
	 */
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;
    }
    public int getAge(){
        return age;
    }
    public void setAge(int age){
        if(age<0)
        System.out.println("设置的年龄不合法");
        else 
        this.age=age;
    }
	/**************** end *****************/
	
	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();

		/**************** begin *****************/
		/*
		 * 创建Student类的实例对象,
		 * 通过调用对象的setName(String n)和setAge(int a)方法
		 * 来设置实例对象的name属性和age属性值,
		 * 方法的参数值为运行时接收从键盘输入,
		 * 并调用speak()方法。
		 */
        Student s=new Student();
        s.setName(name1);
        s.setAge(age1);
        s.speak();
		/**************** end *****************/
	}
}

续上~美妙的周末咩!(* ̄︶ ̄),今天多吃了几碗饭,哈哈哈哈,嗝!

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Java程序设计》课程实验指导书程序代码(答案)(实验三),个人原创,仅供参考与交流。 希望多多交流,共同进步! 实验三 和对象 一、实验目的: 掌握Java的结构、的定义、方法和属性的定义以及对象的实现; 掌握及其成员修饰符的使用;掌握构造函数的使用;方法的参数传递和返回值的用法; 掌握变量与实例变量,以及方法与实例方法的区别。 三、实验内容: 1.定义一个学生类(Student),属性有private的名字(name), public的年龄(age),专业(specialty)和封装name属性的方法:setName(),getName(),getspecialty()编写Application,创建一个学生对象,设置name和age属性值,然后调用一个方法(此方法将对象作为参数传递,在方法中打印出学生的名字name和年龄age)。(学生类仅包含静态成员变量和方法。) 2.定义一个Point,代表一个点,public属性有x和y,方法有显示点坐标 show(),构造函数有两个参数分别给x,y赋值,在main方法中构造两个对象,再创建一方法(getMiddle)为取两个点构成线段的中点的坐标,参数为2个点对象,调用此方法后得到一个新的点,编写Application,显示该对象的坐标值。 3.定义一个复数(z=x+iy)Complex,包含: 两个属性:实部x和虚部y 默认构造函数 Complex(),设置x=0,y=0 构造函数:Complex(int i,int j) 显示复数的方法:showComp()将其显示为如: 5+8i或5-8i 的形式。 求两个复数的和的方法:(参数是两个复数对象,返回值是复数对象)public Complex addComp(Complex C1,Complex C2) 求两个复数的差的方法:(参数是两个复数对象,返回值是复数对象)public Complex subComp(Complex C1,Complex C2) 求两个复数的乘积的方法:(参数是两个复数对象,返回值是复数对象,新复数实部=两复数实部乘积-两复数虚部乘积,新复数虚部=两复数实部与虚部交叉乘积之和,)public Complex multiComp(Complex C1,Complex C2) 比较两个复数是否相等的方法(参数是两个复数对象,返回值是boolean型)public boolean equalComp(Complex C1,Complex C2) 在Application中测试该的方法,实部x和虚部y可由main方法参数提供输入。 三、实验要求: 1. 正确地定义、方法和属性; 2. 学会方法的参数传递和返回值的用法; 3. 熟练使用及其成员修饰符 4.使用构造函数创建的对象; 5. 变量与实例变量,以及方法与实例方法的使用 6.程序应包括各个被调用方法的执行结果的显示。 7.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。(附运行界面、源代码)。 四、实验步骤: 1.(第1)定义一个学生类(Student)及它的属性和方法;定义主和main(),在main()方法中创建学生对象,并通过对象调用它的方法setName(),getName(),输出学生的名字name和年龄age。 2. (第2) 定义Point及它的属性、方法和构造函数,定义主和main(),在main()方法中创建两个坐标对象,,并通过对象调用getMiddle方法后得到一个新的点坐标,调用show()显示该对象的坐标值。 3. (第3)定义一个复数(z=x+iy)Complex,及它的属性、方法和构造函数;定义主和main()方法,在main()方法中创建两个复数Complex对象,并通过复数对象调用它们的属性和方法,输出方法执行结果。 五、自做实验 1. 构造一个来描述屏幕上的一个点,该的构成包括点的x和y两个坐标,以及一些对点进行的操作,包括:取得点的坐标值,对点的坐标进行赋值,编写应用程序生成该的对象并对其进行操作。 2. 编写实现:有一个三角形Triangle,成员变量有底边x和另一条边y,和两边的夹角a(0<a<180),a为静态成员,成员方法有两个:求面积s(无参数)和修改角度(参数为角度)。 3. 编写实现: 构造函数为 Triangle(int xx,int yy,int aa) 参数分别为x,y,a赋值 在main方法中构造两个对象,求出其面积,然后使用修改角度的方法,修改两边的夹角,再求出面积值。(提示:求高的方法 h=y*Math.sin(a) ) 注意:构造方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为0值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

少年游四方

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

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

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

打赏作者

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

抵扣说明:

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

余额充值