当前位置: 代码迷 >> 综合 >> Day11 JavaObject02
  详细解决方案

Day11 JavaObject02

热度:17   发布时间:2023-12-24 07:46:27.0
  1. 创建两个类,分别用来表示长方形和正方形,同时定义所需的成员变量,代表长方形或者正方形的边长,在两个类中分别定义两个方法,用来求对应形状的面积和周长,并定义相应的get,set方法,获取和改变方形和正方形的变长。
package com.cskaoyan;
/*** 1. 创建两个类,分别用来表示长方形和正方形,* 同时定义所需的成员变量,代表长方形或者正方形的边长,* 在两个类中分别定义两个方法,用来求对应形状的面积和周长,* 并定义相应的get,set方法,获取和改变长方形和正方形的变长。*/
public class Work01 {
    public static void main(String[] args) {
    Square square = new Square(5);System.out.println("正方形的边长为:" + square.getHeight() + ","+"正方形的面积为:" + square.getArea() + ","+"正方形的周长为:" + square.getPerimeter() + "。");Rectangle rectangle = new Rectangle();rectangle.setWidth(4);rectangle.setHeight(5);System.out.println("长方形的宽度为:" + rectangle.getWidth() + ","+"长方形的高度为:" + rectangle.getHeight() + ","+"长方形的面积为:" + rectangle.getArea() + ","+"长方形的周长为:" + rectangle.getPerimeter() + "。");}
}
class Square{
    int height;//边长Square(){
    //默认构造函数}Square(int height){
    //带参构造函数this.height = height;}public int getArea(){
    //获取正方形的面积return this.height * this.height;}public int getPerimeter(){
    //获取正方形的周长return 4 * this.height;}public int getHeight() {
    //获取正方形的边长return height;}public void setHeight(int height) {
    //修改正方形的边长this.height = height;}
}
class Rectangle{
    int width;//宽度int height;//长度Rectangle(){
    }Rectangle(int width,int height){
    this.width = width;this.height = height;}public int getArea(){
    //获取长方形的面积return this.width * this.height;}public int getPerimeter(){
    //获取长方形的周长return 2 * (this.width + this.height);}public int getWidth() {
    //获取长方形的宽度return width;}public void setWidth(int width) {
    //修改长方形的宽度this.width = width;}public int getHeight() {
    //获取长方形的高度return height;}public void setHeight(int height) {
    //修改长方形的高度this.height = height;}
}

测试:
在这里插入图片描述

  1. 在com.cskaoyan.a包下,定义一个名为MyClass的类如下 public class MyClass {
    public void hello() { System.out.println(“a包”); } } 同时,在com.cskaoyan.b包下,一个类名也为MyClass,同时在com.cskaoyan.b包下定义一个Test类如下
    public class MyClass {
    public void hello() { System.out.println(“b包”); } }
    public class Test {
    public void static main(String[] args) {
    MyClass myClass = new MyClass(); myClass.hello(); } } 毫无疑问,当执行Test中的main方法的时候输出的是: b包 先要求,在不改变Test
    main方法中代码的情况下,让main方法运行之后输出 a包,应该怎么做?

添加代码,将a包中的Myclass导入:

import com.cskaoyan.a.MyClass;

测试:
在这里插入图片描述

  1. 定义一个Student类,并要求其他类在使用Student类的时候,最多只能创建10个Student类的对象,如何实现? 提示1: 首先,要实现该功能,就不能让外部类直接使用
    new Student(…)的方式来创建对象,如何不能让其他类new Student(…),只需将Student类的所 有构造方法的,权限改为private即可。
    接着,把创建对Student对象的工作,交给一个专门的方法去做(想想这个方法应该是怎样的方法)
package com.cskaoyan.work03;
import java.util.Scanner;
public class Work03 {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);//测试,假设要创建15个学生类的对象//避免输入过多信息,简单起见学生类只定义了两个成员变量(学号、姓名)for(int i = 0;i < 15;i++){
    /*System.out.println("请输入学生信息(学号、姓名:)");int sno = sc.nextInt();String name = sc.next();*/int sno = 1;//简单起见,测试时只创建同学号、同姓名的学生String name = "张三";Student student = Student.makeStudent(sno,name);if(student == null){
    break;}}sc.close();}
}
class Student{
    private int sno;private String name;private static int num = 0;//记录学生数量private Student(){
    }private Student(int sno,String name){
    this.sno = sno;this.name = name;}public static Student makeStudent(int sno,String name){
    //构造学生对象的方法,返回值为学生对象num++;if(num <= 10){
    System.out.println("创建成功!");if(num == 10){
    System.out.println("学生人数已经超过上限(注:上限为10人)");}return new Student(sno,name);}else{
    System.out.println("创建失败!");return null;//创建学生数量到达上限,返回null}}public int getSno() {
    return sno;}public String getName() {
    return name;}public static int getNum() {
    return num;}
}

测试:
在这里插入图片描述