5.7第十周上机练习
1、请按照以下要求设计一个学生类Student,并进行测试。
要求如下:
1)Student类中包含姓名、成绩两个属性
2)分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值.
3)Student类中定义一个无参的构造方法和一个接收两个参数的构造方法,两个参数分别为姓名和成绩属性赋值
4)在测试类中创建两个Student对象,一个使用无参的构造方法,然后调用方法给姓名和成绩赋值,一个使用有参的构 造方法,在构造方法中给姓名和成绩赋值
1 package text; 2 3 public class Student { 4 String name=new String("学生还未命名"); //姓名 5 int score; //成绩 6 public Student(){ //无参构造方法 7 } 8 public Student(String nam,int score){ //有参构造方法 9 this.name=nam; 10 this.score=score; 11 } 12 public void set(String nam,int score){ //设置函数 13 this.name=nam; 14 this.score=score; 15 } 16 public void get(){ //获取函数 17 System.out.println("姓名:"+name); 18 System.out.println("成绩:"+score); 19 } 20 }测试 21 package text; 22 23 public class Student1 { 24 public static void main(String[] args) { 25 // TODO Auto-generated method stub 26 Student s=new Student(); 27 s.set("张三",79); 28 s.get(); 29 Student s1=new Student("赵丽",98); 30 s1.get(); 31 } 32 }
2、请编写一个程序,该程序由两个类组成,一个Person类,一个Test类。在Person类中定义一个无参构造方法,里面 输出一句话:”无参的构造方法被调用了…”。并在测试类中进行测试。
1 package text; 2 3 public class Person { 4 5 public void speak() { 6 System.out.println("无参的构造方法被调用"); 7 } 8 } 9 测试 10 package text; 11 12 public class Test { 13 14 public static void main(String[] args) { 15 // TODO Auto-generated method stub 16 Person p = new Person(); 17 p.speak(); 18 } 19 20 }
3. 使用java类描述一个车类,车都具备名字、颜色两个属性,还具备跑的功能。 请设计一个汽车类Car,该类中包含 两个属性姓名(name)、颜色(color),一个用于描述汽车跑的run()方法。
1 package text; 2 3 public class Java { 4 String name; 5 String color; 6 public void run(){ 7 System.out.println("车的名字:"+name+"车的颜色:"+color); 8 } 9 } 10 测试 11 package text; 12 13 public class Car { 14 15 public static void main(String[] args) { 16 // TODO Auto-generated method stub 17 Java j = new Java(); 18 j.name = "奔驰"; 19 j.color = "白色"; 20 j.run(); 21 } 22 }
4. 编写一个类,类中定义一个静态方法,用于求两个整数的和。 请按照以下要求设计一个测试类Demo,并进行测试。 要求如下:
1)Demo类中有一个静态方法get(int a,int b)该方法用户返回参数a、b两个整数的和;
2)在main()方法中调用get方法并输出计算结果。
1 package text; 2 3 public class Demo { 4 public static int get(int a, int b) { 5 int c = a + b; 6 return c; 7 } 8 } 9 测试 10 package text; 11 12 public class Person { 13 14 public static void main(String[] args) { 15 int x = Demo.get(5, 8); 16 System.out.println("结果为:" + x); 17 } 18 }
5.说一下什么是封装, 使用封装的好处。什么是get,set访问器
• 所谓封装是把对象的属性和行为结合在一个独立的系统单
位内部
尽可能隐蔽对象的内部细节,只向外部提供接口
降低对象间的耦合度
• 使用封装的好处:
– 使对象能够集中而完整地描述并对应一个具体事物
– 体现了事物的相对独立性,使对象外部不能随意存取
对象的内部数据
-减少耦合
-可以对成员进行更精确的控制
-加强程式码的安全性
set()是给属性赋值的,get()是取得属性值的 被设置和存取的属性一般是私有 主要是起到封装的作用
只带有 get 访问器的属性称为只读属性。无法对只读属性赋值。 只带有 set 访问器的属性称为只写属性。只写属性除作为赋值的目标外,无法对其进行引用。 同时带有 get 和 set 访问器的属性为读写属性。 在属性声明中,get 和 set 访问器都必须在属性体的内部声明。使用 get 访问器更改对象的状态是一种错误的编程样式