zoukankan      html  css  js  c++  java
  • 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 }    

    运行结果:

  • 相关阅读:
    创建一个新的进程os.fork
    进程的特征
    进程的状态
    多进程概念
    IO多路复用
    Objective-C 和 C++中指针的格式和.方法 和内存分配
    生活需要奋斗的目标
    iOS 关于UITableView的dequeueReusableCellWithIdentifier
    哈哈,发现了刚毕业时发布的求职帖子
    iOS 和Android中的基本日期处理
  • 原文地址:https://www.cnblogs.com/dust2017/p/12731859.html
Copyright © 2011-2022 走看看