- 创建两个类,分别用来表示长方形和正方形,同时定义所需的成员变量,代表长方形或者正方形的边长,在两个类中分别定义两个方法,用来求对应形状的面积和周长,并定义相应的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;}
}
测试:
- 在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;
测试:
- 定义一个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;}
}
测试: