不修改类中代码,改变程序运行结果
在com.cskaoyan.a包下,定义一个名为MyClass的类如下
public class MyClass { public void hello() { System.out.println("a包"); } }
同时,在com.cskaoyan.b包下,一个类名也为MyClass
public class MyClass { public void hello() { System.out.println("b包"); } }
同时在com.cskaoyan.b包下定义一个Test类如下:
public class Test { public static void main(String[] args) { MyClass myClass = new MyClass(); myClass.hello(); } }
毫无疑问,当执行Test中的main方法的时候输出的是: b包 先要求,在不改变Test main方法中代码的情况下,让main方法运行之后输出 a包,应该怎么做?
修改Test类如下package day06.com.cskaoyan.b; import day06.com.cskaoyan.a.MyClass; public class Test { public static void main(String[] args) { MyClass myClass = new MyClass(); myClass.hello(); } }结果 Task02 问题
创建两个类,分别用来表示长方形和正方形,同时定义所需的成员变量,代表长方形或者正方形的边长,在两个类中分别定义两个方法,用来求对应形状的面积和周长,并定义相应的get,set方法,获取 和改变长方形和正方形的边长。
代码package day06.Task02; public class Task02 { public static void main(String[] args) { Square square = new Square(); Rectangle rectangle = new Rectangle(); System.out.println("获取的正方形边长为:" + square.getSideLength()); System.out.println("获取的长方形长、宽分别为:" + rectangle.getLength() + " " + rectangle.getWide()); square.s(); square.l(); rectangle.s(); rectangle.l(); square.setSideLength(4); rectangle.setLength(3); rectangle.setWide(6); System.out.println(); System.out.println("改变后的正方形边长为:" + square.getSideLength()); System.out.println("改变后的长方形长、宽分别为:" + rectangle.getLength() + " " + rectangle.getWide()); square.s(); square.l(); rectangle.s(); rectangle.l(); } } class Square{ private int sideLength = 3; public void s (){ System.out.println("正方形的面积为:" + sideLength * sideLength); } public void l (){ System.out.println("正方形的周长为:" + sideLength * 4); } public int getSideLength() { return sideLength; } public void setSideLength(int sideLength) { this.sideLength = sideLength; } } class Rectangle{ private int length = 2 ; private int wide = 5; public void s (){ System.out.println("长方形的面积为:" + length * wide); } public void l (){ System.out.println("长方形的周长为:" + (length + wide) * 2); } public int getLength() { return length; } public int getWide() { return wide; } public void setLength(int length) { this.length = length; } public void setWide(int wide) { this.wide = wide; } }结果 Task03 问题
a. 声明一个Person类,里面定义了三个属性,name、gender、age(姓名、性别、年龄) 通 过构造方 法进行赋值。有一个display方法,可以展示对应的姓名性别年龄信息
b. 声明一个Student类,继承自Person类,增加一个独特的属性id(学号)通过构造方法进行 赋值,同 时有一个方法可以展示姓名性别年龄学号信息
c. 声明一个Teacher类,继承自Person类,增加course属性(教学课程)通过构造方法进行赋 值,有一 个方法,可以显示姓名性别年龄教学课程信息
代码package day06.Task03; public class Task03 { } class Person{ String name; String gender; int age; public Person(){ } public Person(String name, String gender, int age) { this.name = name; this.gender = gender; this.age = age; } public void display(){ System.out.println(name + "---" + gender + "---" + age); } } class Student extends Person{ int id; public Student(int id) { this.id = id; } } class Teacher extends Person{ String course; public Teacher(String course) { this.course = course; } }Task04 问题
定义一个Student类,并要求其他类在使用Student类的时候,最多只能创建10个Student类的对象,如何实现?
提示:
要实现该功能,就不能让外部类直接使用new Student(…)的方式来创建对象
如何不能让其他类new Student(…),只需将Student类的所 有构造方法的,权限改为 private即可。
接着,把创建对Student对象的工作,交给一个专门的方法去做(想想这个方法应该是怎样 的方法)
代码package day06.Task04; public class Task04 { public static void main(String[] args) { for (int i = 0; i < 15; i++) { Student student = Student.establishStudent0(); //无参 // Student student = Student.establishStudent1("张三"); //一参 // Student student = Student.establishStudent2("张三",1); //二参 // Student student = Student.establishStudent3("张三",1,18); //三参 if(student == null){ System.out.println(i + " :超过十个"); }else{ System.out.println(i + " :这是创建的第" + Student.ans + "个Student类"); } } } } class Student{ String name; int id; int age; static int ans = 0; private Student() { } private Student(String name) { this.name = name; } private Student(String name, int id) { this.name = name; this.id = id; } private Student(String name, int id, int age) { this.name = name; this.id = id; this.age = age; } //0参变量 static public Student establishStudent0(){ if(ans < 10){ ans++; return new Student(); } return null; } //1参变量 static public Student establishStudent1(String name){ if(ans < 10){ ans++; return new Student(); } return null; } //2参变量 static public Student establishStudent2(String name, int id){ if(ans < 10){ ans++; return new Student(); } return null; } //3参变量 static public Student establishStudent3(String name, int id, int age){ if(ans < 10){ ans++; return new Student(); } return null; } }结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)