(一)学习总结
1.阅读下面程序,分析是否能编译通过?如果不能,说明原因。应该如何修改?程序的运行结果是什么?为什么子类的构造方法在运行之前,必须调用父 类的构造方法?能不能反过来?
不能通过编译。应把super语句放在第一句
运行的结果为
GrandParent Created.
Parent Created
Child Created
1.如果子类没有定义构造方法,则调用父类的无参数的构造方法,. 2.如果子类定义了构造方法,且其第一行没有super,则不论子类构造方法是有参数还是无参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法。 若子类构造方法中第一行是有参数或无参数的super,则直接转到对应的有参或无参父类构造方法中,而不再是首先执行无参构造方法; 3.如果子类调用父类带参数的构造方法,可以通过super(参数)调用所需要的父类的构造方法,且该语句做为子类构造方法中的第一条语句。 4.如果某个构造方法调用类中的其他的构造方法,则可以用this(参数),切该语句放在构造方法的第一条
2.阅读下面程序,分析程序中存在哪些错误,说明原因,应如何改正?正确程序的运行结果是什么?
错误1、animal.sleep(); Animal类中没有sleep方法,sleep方法是子类Dog里的,不能调用。
错误2、Dog dog =animal; Animal类是Dog类的父类,应该向下转型。
运行结果为
汪汪......!
狗狗睡觉......
狗狗睡觉......
汪汪......!
3.运行下列程序
类中没有定义toString方法,调用了Project类中的toString方法
正确结果为
姓名:张三,年龄:20
姓名:张三,年龄:20
4.汽车租赁公司,出租汽车种类有客车、货车和皮卡三种,每辆汽车除了具有编号、名称、租金三个基本属性之外,客车有载客量,货车有载货量,皮卡则同时具有载客量和载货量。用面向对象编程思想分析上述问题,将其表示成合适的类、抽象类或接口,说明设计思路。现在要创建一个可租车列表,应当如何创建?
定义一个抽象类,具有编号、名称和租金属性,定义两个接口,分别定义载客量和载货量属性,定义客车类继承抽象类和实现载客量接口,火车类继承抽象类和载货量接口,皮卡类继承抽象类和两个接口。
5.阅读下面程序,分析代码是否能编译通过,如果不能,说明原因,并进行改正。如果能,列出运行结果
interface Animal{
void breathe();
void run();
void eat();
}
class Dog implements Animal{
public void breathe(){
System.out.println("I'm breathing");
}
public void eat(){
System.out.println("I'm eating");
}
@Override
public void run() {
System.out.println("I'm running");
}
}
public class Test{
public static void main(String[] args){
Dog dog = new Dog();
dog.breathe();
dog.eat();
dog.run();
}
}
(二)实验总结
实验四(1)
import java.util.*;
class bank {
private static String bankname = "YINHANG";
private String name, password;
private int banlance, turnover;
public bank(String name, String password, int banlance) {
this.setName(name);
this.setPassword(password);
this.setBanlance(banlance);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getBanlance() {
return banlance;
}
public void setBanlance(int banlance) {
this.banlance = banlance;
}
public int getTurnover() {
return turnover;
}
public void setTurnover(int turnover) {
this.turnover = turnover;
}
public static String welcome() {
return "欢迎来到" + bankname;
}
public String deposit(int turnover) {
this.setTurnover(turnover);
banlance+=turnover;
return name+"的账户存入"+turnover+"元,余额为"+banlance;
}
public String withdrawal(int turnover) {
this.setTurnover(turnover);
banlance-=turnover;
return name+"的账户取出"+turnover+"元,余额为"+banlance;
}
public static String welcomeNext() {
return "欢迎再次光临" + bankname;
}
}
public class yinhang {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int k, m;
String name, password,s;
bank a =null;
System.out.println(bank.welcome());
while (true) {
System.out.println("请选择" + '
' + "1·开户" + '
' + "2·存款" + '
' + "3·取款" + '
' + "4·退出");
while (true) {
k = input.nextInt();
if (k == 1 || k == 2 || k == 3 || k == 4) {
break;
} else {
System.out.println("输入错误,请重新输入");
}
}
if (k == 1) {
System.out.println("请输入用户姓名");
name = input.next();
System.out.println("请输入密码");
password = input.next();
System.out.println("请输入开户金额(扣除10元开卡费)");
while (true) {
m = input.nextInt();
if (m >= 10) {
break;
} else {
System.out.println("输入错误,请重新输入");
}
}
m -= 10;
a = new bank(name, password, m);
System.out.println(a.getName() + "开户成功,余额为" + a.getBanlance());
} else if (k == 2) {
System.out.println("请输入存款金额");
while (true) {
m = input.nextInt();
if (m > 0) {
break;
} else {
System.out.println("输入错误,请重新输入");
}
}
System.out.println(a.deposit(m));
} else if (k == 3) {
System.out.println("请输入密码");
s=input.next();
if(s.equals(a.getPassword())){
System.out.println("请输入取款金额");
while (true) {
m = input.nextInt();
if (m > 0&&m<=a.getBanlance()) {
break;
} else {
System.out.println("输入错误或余额不足,请重新输入");
}
}
System.out.println(a.withdrawal(m));
}
else {
System.out.println("密码错误");
}
} else if (k == 4) {
System.out.println(bank.welcomeNext());
break;
}
}
}
}
实验四(2)
import java.util.*;
class yuangong {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
class guanli extends yuangong {
private String zhiwu;
private int yearmoney;
public String getZhiwu() {
return zhiwu;
}
public void setZhiwu(String zhiwu) {
this.zhiwu = zhiwu;
}
public int getYearmoney() {
return yearmoney;
}
public void setYearmoney(int yearmoney) {
this.yearmoney = yearmoney;
}
}
class zhiyuan extends yuangong {
private String bumen;
private int monthmoney;
public String getBumen() {
return bumen;
}
public void setBumen(String bumen) {
this.bumen = bumen;
}
public int getMonthmoney() {
return monthmoney;
}
public void setMonthmoney(int monthmoney) {
this.monthmoney = monthmoney;
}
}
public class jicheng {
public static void main(String[] args) {
guanli a=new guanli();
guanli b=new guanli();
zhiyuan c= new zhiyuan();
zhiyuan d= new zhiyuan();
a.setName("AAA");
a.setAge(18);
a.setYearmoney(3000);
a.setZhiwu("aaa");
b.setName("BBB");
b.setAge(19);
b.setYearmoney(4000);
b.setZhiwu("bbb");
c.setName("CCC");
c.setAge(20);
c.setMonthmoney(5000);
c.setBumen("ccc");
d.setName("DDD");
d.setAge(21);
d.setMonthmoney(6000);
d.setBumen("ddd");
System.out.println("姓名:"+a.getName()+" 年龄:"+a.getAge()+" 年薪:"+a.getYearmoney()+" 职务:"+a.getZhiwu());
System.out.println("姓名:"+b.getName()+" 年龄:"+b.getAge()+" 年薪:"+b.getYearmoney()+" 职务:"+b.getZhiwu());
System.out.println("姓名:"+c.getName()+" 年龄:"+c.getAge()+" 月薪:"+c.getMonthmoney()+" 部门:"+c.getBumen());
System.out.println("姓名:"+d.getName()+" 年龄:"+d.getAge()+" 月薪:"+d.getMonthmoney()+" 部门:"+d.getBumen());
}
}
实验四(3)
import java.util.*;
abstract class pingmian {
public abstract double mianji();
public abstract double zhouchang();
public void jisuan(pingmian s) {
double x;
Scanner input = new Scanner(System.in);
System.out.println("请计算面积");
x = input.nextDouble();
if (x == s.mianji()) {
System.out.println("正确");
} else {
System.out.println("错误,正确答案为" + s.mianji());
}
System.out.println("请计算周长");
x = input.nextDouble();
if (x == s.zhouchang()) {
System.out.println("正确");
} else {
System.out.println("错误,正确答案为" + s.zhouchang());
}
}
}
abstract class liti {
public abstract double biaomianji();
public abstract double tiji();
public void jisuan(pingmian s, liti l) {
double x;
Scanner input = new Scanner(System.in);
System.out.println("请计算表面积");
x = input.nextDouble();
if (x == l.biaomianji()) {
System.out.println("正确");
} else {
System.out.println("错误,正确答案为" + l.biaomianji());
}
System.out.println("请计算体积");
x = input.nextDouble();
if (x == l.tiji()) {
System.out.println("正确");
} else {
System.out.println("错误,正确答案为" + l.tiji());
}
}
}
class yuan extends pingmian {
double r;
yuan(double r) {
this.r = r;
}
public double mianji() {
return (3.14 * r * r);
}
public double zhouchang() {
return (6.48 * r);
}
}
class juxing extends pingmian {
double a, b;
juxing(double a, double b) {
this.a = a;
this.b = b;
}
public double mianji() {
return a * b;
}
public double zhouchang() {
return (2 * (a + b));
}
}
class sanjiao extends pingmian {
double a, b, c, h;
sanjiao(double a, double b, double c, double h) {
this.a = a;
this.b = b;
this.c = c;
this.h = h;
}
public double mianji() {
return (a * h / 2);
}
public double zhouchang() {
return (a + b + c);
}
}
class qiu extends liti {
double r;
public qiu(double r) {
this.r = r;
}
public double biaomianji() {
return (12.56 * r * r);
}
public double tiji() {
return (12.56 * r * r * r / 3);
}
}
class yuanzhu extends liti {
double h;
pingmian s;
yuanzhu(pingmian s, double h) {
this.s = s;
this.h = h;
}
public double biaomianji() {
return s.zhouchang() * h + 2 * s.mianji();
}
public double tiji() {
return s.mianji() * h;
}
}
class yuanzhui extends liti {
double h;
yuan s;
yuanzhui(yuan s, double h) {
this.s = s;
this.h = h;
}
public double biaomianji() {
return Math.pow(s.r * s.r + h * h, 0.5) * 3.14 * s.r + s.mianji();
}
public double tiji() {
return s.mianji() * h / 3;
}
}
public class tuxing {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int a, b, c, r, h;
double x;
pingmian s = null;
liti l = null;
r = (int) (Math.random() * 10);
l = new qiu(r);
System.out.println("球,半径为" + r);
l.jisuan(null, l);
r = (int) (Math.random() * 10);
h = (int) (Math.random() * 10);
s = new yuan(r);
l = new yuanzhu(s, h);
System.out.println("圆柱,底面园的半径为" + r + "高为" + h);
l.jisuan(s, l);
r = (int) (Math.random() * 10);
h = (int) (Math.random() * 10);
s = new yuan(r);
l = new yuanzhui((yuan) s, h);
System.out.println("圆锥,底面园的半径为" + r + "高为" + h);
l.jisuan(s, l);
r = (int) (Math.random() * 10);
s = new yuan(r);
System.out.println("圆形,半径为" + r);
s.jisuan(s);
a = (int) (Math.random() * 10);
b = (int) (Math.random() * 10);
s = new juxing(a, b);
System.out.println("矩形,两条边分别为" + a + "和" + b);
s.jisuan(s);
a = (int) (Math.random() * 10);
b = (int) (Math.random() * 10);
c = (int) (Math.random() * 10);
h = (int) (Math.random() * 10);
s=new sanjiao(a,b,c,h);
System.out.println("三角形,三条边分别为" + a + "和" + b + "和" + c + "第一条边上的高为" + h);
s.jisuan(s);
}
}
实验五(2)
import java.util.*;
interface Animal{
abstract String cry();
abstract String getAnimaName();
}
class cat implements Animal{
public String cry() {
return "喵喵喵";
}
public String getAnimaName() {
return "猫";
}
}
class dog implements Animal{
public String cry() {
return "汪汪汪";
}
public String getAnimaName() {
return "狗";
}
}
class Simulator{
void playSound(Animal animal) {
System.out.println(animal.cry());
System.out.println(animal.getAnimaName());
}
}
public class chongwu {
public static void main(String[] args) {
Simulator simulator = new Simulator();
simulator.playSound(new dog());
simulator.playSound(new cat());
}
}
实验五(3)
import java.util.*;
abstract class Transportation {
String bianhao;
String xinghao;
String fuzeren;
public Transportation() {
}
public abstract String transport();
public Transportation(String bianhao, String xinghao, String fuzeren) {
this.setbianhao(bianhao);
this.setxinghao(xinghao);
this.setfuzeren(fuzeren);
}
public String getbianhao() {
return bianhao;
}
public void setbianhao(String bianhao) {
this.bianhao = bianhao;
}
public String getxinghao() {
return xinghao;
}
public void setxinghao(String xinghao) {
this.xinghao = xinghao;
}
public String getfuzeren() {
return fuzeren;
}
public void setfuzeren(String fuzeren) {
this.fuzeren = fuzeren;
}
}
class JDTransportation extends Transportation {
public JDTransportation(String bianhao, String xinghao, String fuzeren) {
super(bianhao, xinghao, fuzeren);
}
public String transport() {
return "1";
}
}
interface GPS {
abstract String showCoordinate();
}
class Phone implements GPS {
public String showCoordinate() {
int x, y;
x = (int) (Math.random() * 1000);
y = (int) (Math.random() * 1000);
return x + "," + y;
}
}
class SendTask {
private String danhao;
private String zhongliang;
SendTask(String danhao, String zhongliang) {
this.setZhongliang(zhongliang);
this.setDanhao(danhao);
}
public String getDanhao() {
return danhao;
}
public void setDanhao(String danhao) {
this.danhao = danhao;
}
public String getZhongliang() {
return zhongliang;
}
public void setZhongliang(String zhongliang) {
this.zhongliang = zhongliang;
}
public void sendBefore() {
System.out.println("订单开始处理,仓库开始验货...
货物重量:" + this.getZhongliang() + "
订单已发货
快递单号:" + this.getDanhao());
}
public void send(Transportation t, GPS tool) {
System.out.println("
运货人" + t.getfuzeren() + "正在驾驶编号为" + t.getbianhao() + "的" + t.getxinghao()
+ "发送货物!
京东快递运输中......
货物当前坐标:" + tool.showCoordinate());
}
public void sendAfter(Transportation t) {
System.out
.println("
货物运输已完成
运货人" + t.getfuzeren() + "所驾驶编号为" + t.getbianhao() + "的" + t.getxinghao() + "已归还!");
}
}
public class wuliu {
public static void main(String[] args) {
SendTask a = new SendTask("hx201835", "13.2kg");
Transportation b = new JDTransportation("zh1002", "长城", "小张");
GPS c = new Phone();
a.sendBefore();
a.send(b, c);
a.sendAfter(b);
}
}