day10作业--------------------Java面向对象--Javaobject01-3&javaobject02
作业:
1. 创建两个类,分别用来表示长方形和正方形,同时定义所需的成员变量,代表长方形或者正方形的边长,在两个类中分别定义两个方法,用来求对应形状的面积和周长,并定义相应的get,set方法,获取和改变方形和正方形的变长。
2. 在com.cskaoyan.a包下,定义一个名为MyClass的类如下
1 public class MyClass { 2 public void hello() { 3 System.out.println("a包"); 4 } 5 } 6 7 //同时,在com.cskaoyan.b包下,一个类名也为MyClass 8 public class MyClass { 9 public void hello() { 10 System.out.println("b包"); 11 } 12 } 13 14 //同时在com.cskaoyan.b包下定义一个Test类如下: 15 public class Test { 16 public void static main(String[] args) { 17 MyClass myClass = new MyClass(); 18 myClass.hello(); 19 } 20 }
毫无疑问,当执行Test中的main方法的时候输出的是: b包
先要求,在不改变Test main方法中代码的情况下,让main方法运行之后输出 a包,应该怎么做?
3. 定义一个Student类,并要求其他类在使用Student类的时候,最多只能创建10个Student类的对象,如何实现?
提示: 首先,要实现该功能,就不能让外部类直接使用
new Student(...)的方式来创建对象,如何不能让其他类new Student(...),
只需将Student类的所 有构造方法的,权限改为private即可。
接着,把创建对Student对象的工作,交给一个专门的方法去做(想想这个方法应该是怎样的方法)
参考答案
1.
2. 使用import 语句导入a包的MyClass类即可
3.
1 /** 2 * 有一个student类,现在要求外部程序使用该类时,最多仅允许创建出10个对象,应该怎么做 3 * 提示:可以将构造函数中的public改成private,然后外部创建对象 4 */ 5 public class Student { 6 7 private static int sum = 1; 8 9 private Student(){ 10 11 } 12 13 public static Student getInstance(){ 14 Student student = null; 15 if(sum <= 10){ 16 student = new Student(); 17 sum++; 18 } 19 return student; 20 } 21 22 /** 23 * 学生姓名 24 */ 25 String name; 26 27 /** 28 * 年龄 29 */ 30 int age; 31 32 public String getName() { 33 return name; 34 } 35 36 public void setName(String name) { 37 this.name = name; 38 } 39 40 public int getAge() { 41 return age; 42 } 43 44 public void setAge(int age) { 45 this.age = age; 46 } 47 }
我自己写的:
1.
1 package com.day010; 2 /* 3 * 1. 创建两个类,分别用来表示长方形和正方形,同时定义所需的成员变量, 4 代表长方形或者正方形的边长,在两个类中分别定义两个方法,用来求对应形状的面积和周长, 5 并定义相应的get,set方法,获取和改变方形和正方形的变长。 6 */ 7 public class Demo1 { 8 9 public static void main(String[] args) { 10 System.out.println("----------长方形-------------"); 11 Rectangle rec = new Rectangle(4, 2); 12 System.out.println("长方形的长为:"+rec.getLength()); 13 System.out.println("长方形的长为:"+rec.getWidth()); 14 rec.area(); 15 rec.perimeter(); 16 17 System.out.println(); 18 System.out.println("修改长方形的长和宽后:"); 19 //修改长方形的长和宽 20 rec.setLength(5); 21 rec.setWidth(3); 22 System.out.println("长方形的长为:"+rec.getLength()); 23 System.out.println("长方形的长为:"+rec.getWidth()); 24 rec.area(); 25 rec.perimeter(); 26 27 System.out.println("----------正方形-------------"); 28 Square squ = new Square(6); 29 System.out.println("正方形的边长为:"+ squ.getA()); 30 squ.area(); 31 squ.perimeter(); 32 System.out.println(); 33 System.out.println("修改正方形边长后:"); 34 squ.setA(8); 35 System.out.println("正方形的边长为:"+ squ.getA()); 36 squ.area(); 37 squ.perimeter(); 38 39 } 40 41 42 } 43 //定义长方形的类 44 class Rectangle{ 45 private int a;//长方形的长 46 private int b;//长方形的宽 47 //定义两参构造方法 48 public Rectangle(int a, int b) { 49 this.a = a; 50 this.b = b; 51 } 52 //求长方形的面积的方法 53 public void area() { 54 int s = a * b; 55 System.out.println("长方形的面积为:"+s); 56 } 57 //求长方形的周长的方法 58 public void perimeter() { 59 int c = (a + b) * 2; 60 System.out.println("长方形的周长为:"+c); 61 } 62 public int getLength() { 63 return this.a; 64 } 65 66 public void setLength(int a) { 67 this.a = a; 68 } 69 public int getWidth() { 70 return this.b; 71 } 72 public void setWidth(int b) { 73 this.b = b; 74 } 75 76 } 77 78 //定义正方形的类 79 class Square{ 80 private int a;//定义正方形的边长 81 82 //定义构造方法 83 public Square(int a) { 84 this.a = a; 85 } 86 public void area() { 87 System.out.println("正方形的面积为:"+ a * a); 88 } 89 public void perimeter() { 90 System.out.println("正方形的周长为:"+ 4 * a); 91 } 92 public int getA() { 93 return this.a; 94 } 95 public void setA(int a) { 96 this.a = a; 97 } 98 }
运行结果:
3.
1 package com.day010; 2 /* 3 * 3. 定义一个Student类,并要求其他类在使用Student类的时候,最多只能创建10个Student类的对象,如何实现? 4 5 提示: 首先,要实现该功能,就不能让外部类直接使用 6 new Student(...)的方式来创建对象,如何不能让其他类new Student(...), 7 只需将Student类的所 有构造方法的,权限改为private即可。 8 9 接着,把创建对Student对象的工作,交给一个专门的方法去做(想想这个方法应该是怎样的方法) 10 */ 11 public class Demo3 { 12 13 public static void main(String[] args) { 14 Student stu1 = Student.gentInstance(); 15 System.out.println("stu1的姓名为:"+ stu1.getName()); 16 System.out.println("stu1的成绩为:"+ stu1.getGrade()); 17 System.out.println("-----------更改后------------"); 18 stu1.setName("张三"); 19 stu1.setGrade(90); 20 System.out.println("stu1的姓名为:"+ stu1.getName()); 21 System.out.println("stu1的成绩为:"+ stu1.getGrade()); 22 23 } 24 25 } 26 27 class Student{ 28 private static int count = 1;//计数 29 30 //定义private构造方法 31 private Student() { 32 33 } 34 35 //创建对象方法,static关键字修饰,不需要对象 即可通过 类名. 的方式访问 36 public static Student gentInstance() { 37 Student stu = null; 38 if(count <= 10) { 39 stu = new Student(); 40 count++; 41 } 42 return stu; 43 } 44 45 46 int sno;//学号 47 String name;//姓名 48 double grade;//成绩 49 50 51 public String getName() { 52 return this.name; 53 } 54 public void setName(String name) { 55 this.name = name; 56 } 57 58 public double getGrade() { 59 return this.grade; 60 } 61 public void setGrade(double grade) { 62 this.grade = grade; 63 } 64 }
运行结果: