一、【问题描述】设计学生类Student和它的子类Undergraduate,要求:
(1)Student类有name(姓名)和age(年龄)属性,有一个包含两个参数的构造方法,为两个属性赋值,一个show()方法输出Student的属性信息;
(2)Undergraduate类增加一个major(专业)属性。有一个包含三个参数的构造方法,前两个参数用于给继承的name和age属性赋值,第三个参数给major属性赋值,一个show()方法输出Undergraduate的属性信息。
(3)在测试类中分别 创建Student对象和Undergraduate对象,调用它们的show()。
【输入形式】
【输出形式】
【样例输入】无
【样例输出】
information:
name=zhangsan
age=20
information:
name=lisi
age=21
major=math
public class Test {
public static void main(String[] args) {
Student student = new Student("zhangsan", 20);
student.show();
Undergraduate undergraduate = new Undergraduate("lisi", 21, "math");
undergraduate.show();
}
}
// 学生类
class Student {
String name;
int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void show() {
System.out.println("information:");
System.out.println("name=" + name);
System.out.println("age=" + age);
}
}
// 本科生类,继承自Student类
class Undergraduate extends Student {
String major;
public Undergraduate(String name, int age, String major) {
super(name, age);
this.major = major;
}
public void show() {
super.show();
System.out.println("major=" + major);
}
}
二、定义摄氏温度类Celsius和华氏温度类Fahrenheit
属性都有温度数值和标志,方法都有显示温度值。在此基础上进行泛化,得到温度类Temperature。温度类属性有:温度值,方法有显示温度值。测试类代码如下,定义三个类的对象,实例化,显示各自的信息。编写实现摄氏温度类Celsius、华氏温度类Fahrenheit和温度类Temperature,可以将所编写的代码和测试类保存到一个文件中上传提交。
public class Test{
public static void main(String [] args){
Temperature t = new Temperature(24);
t.display();
Celsius c = new Celsius(24);
c.display();
Fahrenheit f = new Fahrenheit(56);
f.display();
}
}
【输入形式】
【输出形式】
【样例输入】
【样例输出】
temperature=24.0
C temperature=24.0
F temperature=56.0
public class Test {
public static void main(String[] args) {
Temperature2 t = new Temperature2(24);
t.display();
Celsius c = new Celsius(24);
c.display();
Fahrenheit f = new Fahrenheit(56);
f.display();
}
}
// 温度类Temperature
class Temperature2 {
double temperature;
Temperature2(double temperature) {
this.temperature = temperature;
}
void display() {
System.out.println("temperature=" + this.temperature);
}
}
// 摄氏温度类Celsius
class Celsius extends Temperature2 {
Celsius(double temperature) {
super(temperature);
}
void display() {
System.out.println("C temperature=" + this.temperature);
}
}
// 华氏温度类Fahrenheit
class Fahrenheit extends Temperature2 {
Fahrenheit(double temperature) {
super(temperature);
}
void display() {
System.out.println("F temperature=" + this.temperature);
}
}
三、Java基础类库java.util包中有一个表示日期的Date类
自己设计一个MyDate类继承Date类,添加方法 MyDate addDays(int days),计算并返回当前日期加上days天后的MyDate对象;添加方法 int getDays(MyDate dt),计算并返回MyDate对象dt与当前日期对象之间相差的天数。测试类代码如下,创建一个表示2020年1月1日的MyDate类对象(1577808000000L是2020.1.1 0点距1970.1.1 0点以来的毫秒数),然后为它增加100天得到新的MyDate类对象,再计算两个日期的天数差。编程实现MyDate类,可以将所编写的代码和测试类保存到一个文件中上传提交。
import java.util.TimeZone;
import java.text.SimpleDateFormat;
public class Test{
public static void main(String [] args){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy MM dd");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
MyDate dt = new MyDate(1577808000000L);
String dtStr = sdf.format(dt);
System.out.println(dtStr);
MyDate md = dt.addDays(100);
String mdStr = sdf.format(md);
System.out.println(mdStr);
int days = dt.getDays(md);
System.out.print(mdStr + " - "+ dtStr +": ");
System.out.println(days+"days");
}
}
【输入形式】
【输出形式】
【样例输入】
【样例输出】
2020 01 01
2020 04 10
2020 04 10 - 2020 01 01: 100days
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import java.util.Date;
import java.util.TimeZone;
import java.text.SimpleDateFormat;
public class Test{
public static void main(String [] args){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy MM dd");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
MyDate dt = new MyDate(1577808000000L);
String dtStr = sdf.format(dt);
System.out.println(dtStr);
MyDate md = dt.addDays(100);
String mdStr = sdf.format(md);
System.out.println(mdStr);
int days = dt.getDays(md);
System.out.print(mdStr + " - "+ dtStr +": ");
System.out.println(days+"days");
}
}
class MyDate extends Date {
public MyDate(long milliseconds) {
super(milliseconds);
}
public MyDate addDays(int days) {
long newMilliseconds = this.getTime() + ((long) days) * 24 * 60 * 60 * 1000;
return new MyDate(newMilliseconds);
}
public int getDays(MyDate dt) {
long diffMilliseconds = Math.abs(this.getTime() - dt.getTime());
return (int) (diffMilliseconds / (24 * 60 * 60 * 1000));
}
public static void main(String[] args) {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy MM dd");
sdf.setTimeZone(java.util.TimeZone.getTimeZone("GMT+8"));
MyDate dt = new MyDate(1577808000000L);
String dtStr = sdf.format(dt);
System.out.println(dtStr);
MyDate md = dt.addDays(100);
String mdStr = sdf.format(md);
System.out.println(mdStr);
int days = dt.getDays(md);
System.out.print(mdStr + " - " + dtStr + ": ");
System.out.println(days + " days");
}
}
四、运行结果
和上述题目要求一样。复制自取的小伙伴希望给个赞,让本人更有动力。分享一些源码。