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 }    

运行结果:

原文地址:https://www.cnblogs.com/dust2017/p/12731859.html