JavaSE面向对象

面向对象实验

实验要求

1、修改Pet类为抽象类,Pet类中的eat方法为抽象方法,输出Dog信息

2、设计Bird、Fish类,都继承自抽象类Animal,实现其方法info(),并打印它们的信息。

3、Engine(引擎),具有power(功率,整数)属性,相对应的setter和getter方法,work()方法:输出"xx功率的发动机在运转"。Car(Engine轿车),具有Engine属性,相对应的setter和getter方法,run()方法,在方法中判断Engine对象是否为null,选择输出"发动机发动不了"或者"xx功率的发动机在运转,汽车在跑"。Benz(奔 驰),继承Car类,重写run()方法Driver(驾驶员),具有属性name(姓名),相对应的setter和getter方 法,driveCar(Benz benz)方法,在方法中输出“xxx 在开车”,并调用benz的run()方法。

4、写一个名为 Account 的类模拟账户。该类的属性和方法如下图所示。该类包括的属性:账号id,余额 balance,年利率 annualInterestRate;包含的方法:访问器方法(getter 和setter 方法),返回月利率的方法 getMonthlyInterest(),取款方法 withdraw(),存款方法deposit()。创建 Account 类的一个子类 CheckAccount 代表可透支的账户,该账户中定义一个属性overdraft 代表可透支限额。在CheckAccount 类中重写 withdraw 方法,其算法如下:如果(取款金额<账户余额),可直接取款如果
(取款金额>账户余额),计算需要透支的额度判断可透支额 overdraft 是否足够支付本次透支需要,如果可以将账户余额修改为 0,冲减可透支金额如果不可以提示用户超过可透支额的限额

5、java类是否可以多继承,怎么实现多继承?

6、代码阅读

class A { 
	int a = 1; 
	double d = 2.0; 
	void show() { 
		System.out.println("Class A: a=" + a + "\td=" + d);
	} 
}
class B extends A { 
	float a = 3.0f; 
	String d = "Java program."; 
	void show() { 
		super.show(); 
		System.out.println("Class B: a=" + a + "\td=" + d);
	} 
}
class Test{ 
	public static void main(String[] args){ 
		A a=new A(); 
		a.show(); 
		System.out.println(a.a);
		// A b=new B();
		// b.show();
		// System.out.println(b.a);
	} 
}

7、代码阅读题

class Father { 
	public int get() { 
		return 1; 
	}
}
class Sun extends Father { 
	public long get() { 
		return 2;
	}
	public static void main(String[] args) { 
		Father s = new Sun(); 
		System.out.println(s.get()); 
	}
}

8、编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。

9、定义员工类Employee,包含姓名、工号和工资,包含计算奖金方法bonus,普通员工和经理都是员工,计算奖金的方法为工资*奖金系数,普通员工的奖金系数为1.5(常量),经理为2(常量),分别实现bonus方法,创建对象测试。

10、封装一个西游记人物类Person:包含私有属性:姓名(name)、身高(height)、武器(weapon)、种族(race),并提供get方法和set方法。在测试类中实例化三个对象:tangseng(唐僧)、sunwukong(孙悟空)、baigujing(白骨精),分别设置他们的种族为:人族、仙族、妖族在
打印对象时,按照例如:“姓名:孙悟空;种族:仙族”的格式在控制台输出信息。提供一个技能方法void skill(),这个方法根据当前对象name属性判断技能,如果是孙悟空,就打印“七十二变”,如果是唐僧,就打印“紧箍咒”,如果是白骨精,就打印“九阴白骨爪”,在测试类中调用这个方法。

11、阅读如下代码

class Super { 
	int i = 0; 
	public Super(String a) { 
		System.out.println("A"); 
		i = 1;
	}
	public Super() { 
		System.out.println("B");
		i += 2; 
	}	
}
class Demo extends Super { 
	public Demo(String a) { 
		System.out.println("C"); 
		i = 5; 
	}
	public static void main(String[] args) { 
		int i = 4; 
		Super d = new Demo("A"); 
		System.out.println(d.i);
	}
}

12、判断下列代码是否正确

class Super { 
	int i = 0; 
	public Super(String s) { 
		i = 1; 
	} 
}
class Demo extends Super { 
	public Demo(String s) {
		//默认有一句话super(); 去找父类的无参构造,但是没找到,
		//直接编译错。如何修改? 
		super(s);
		i = 2;
	}
	public static void main(String[] args) { 
		Demo d = new Demo("yes"); 
		System.out.println(d.i); 
	}
}

13、判断

//阅读以下代码,可以正常填入class Sun中的方法的是 
class Father{ 
	public String test(){ 
		return "father";
	} 
}
class Sun extends Father{

}

A.public void test(){} 
B.public void test(String s){} 
C.public String test(int i){return "";} 
D.public int test(int i){return 1;} 
E.public int test(){}

练习:1、某汽车租赁公司出租多种车辆,车型及租金情况如下:

在这里插入图片描述


实验过程

1、修改Pet类为抽象类,Pet类中的eat方法为抽象方法,输出Dog信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、设计Bird、Fish类,都继承自抽象类Animal,实现其方法info(),并打印它们的信息。

在这里插入图片描述
在这里插入图片描述

3、Engine(引擎),具有power(功率,整数)属性,相对应的setter和getter方法,work()方法:输出"xx功率的发动机在运转"。Car(Engine轿车),具有Engine属性,相对应的setter和getter方法,run()方法,在方法中判断Engine对象是否为null,选择输出"发动机发动不了"或者"xx功率的发动机在运转,汽车在跑"。Benz(奔 驰),继承Car类,重写run()方法Driver(驾驶员),具有属性name(姓名),相对应的setter和getter方 法,driveCar(Benz benz)方法,在方法中输出“xxx 在开车”,并调用benz的run()方法。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、写一个名为 Account 的类模拟账户。该类的属性和方法如下图所示。该类包括的属性:账号id,余额 balance,年利率 annualInterestRate;包含的方法:访问器方法(getter 和setter 方法),返回月利率的方法 getMonthlyInterest(),取款方法 withdraw(),存款方法deposit()。创建 Account 类的一个子类 CheckAccount 代表可透支的账户,该账户中定义一个属性overdraft 代表可透支限额。在CheckAccount 类中重写 withdraw 方法,其算法如下:如果(取款金额<账户余额),可直接取款如果
(取款金额>账户余额),计算需要透支的额度判断可透支额 overdraft 是否足够支付本次透支需要,如果可以将账户余额修改为 0,冲减可透支金额如果不可以提示用户超过可透支额的限额

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、java类是否可以多继承,怎么实现多继承?
  类只可以单继承,Java中接口可以实现多继承

6、代码阅读

class A { 
	int a = 1; 
	double d = 2.0; 
	void show() { 
		System.out.println("Class A: a=" + a + "\td=" + d);
	} 
}
class B extends A { 
	float a = 3.0f; 
	String d = "Java program."; 
	void show() { 
		super.show(); 
		System.out.println("Class B: a=" + a + "\td=" + d);
	} 
}
class Test{ 
	public static void main(String[] args){ 
		A a=new A(); 
		a.show(); 
		System.out.println(a.a);
		A b=new B();
		b.show();
		System.out.println(b.a);
	} 
}

Class A: a = 1 d = 2.0
1
Class A: a = 1 d = 2.0
Class B: a = 3.0 d = Java program.
1
多态调用时成员变量走前面的类,方法走后面的类

7、代码阅读题

class Father { 
	public int get() { 
		return 1; 
	}
}
class Sun extends Father { 
	public long get() { 
		return 2;
	}
	public static void main(String[] args) { 
		Father s = new Sun(); 
		System.out.println(s.get()); 
	}
}

2(同上一题一个概念)

8、编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。

在这里插入图片描述
在这里插入图片描述

9、定义员工类Employee,包含姓名、工号和工资,包含计算奖金方法bonus,普通员工和经理都是员工,计算奖金的方法为工资*奖金系数,普通员工的奖金系数为1.5(常量),经理为2(常量),分别实现bonus方法,创建对象测试。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10、封装一个西游记人物类Person:包含私有属性:姓名(name)、身高(height)、武器(weapon)、种族(race),并提供get方法和set方法。在测试类中实例化三个对象:tangseng(唐僧)、sunwukong(孙悟空)、baigujing(白骨精),分别设置他们的种族为:人族、仙族、妖族在
打印对象时,按照例如:“姓名:孙悟空;种族:仙族”的格式在控制台输出信息。提供一个技能方法void skill(),这个方法根据当前对象name属性判断技能,如果是孙悟空,就打印“七十二变”,如果是唐僧,就打印“紧箍咒”,如果是白骨精,就打印“九阴白骨爪”,在测试类中调用这个方法。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11、阅读如下代码

class Super { 
	int i = 0; 
	public Super(String a) { 
		System.out.println("A"); 
		i = 1;
	}
	public Super() { 
		System.out.println("B");
		i += 2; 
	}	
}
class Demo extends Super { 
	public Demo(String a) { 
		System.out.println("C"); 
		i = 5; 
	}
	public static void main(String[] args) { 
		int i = 4; 
		Super d = new Demo("A"); 
		System.out.println(d.i);
	}
}

B(对子类进行实例化时会调用父类的无参构造方法)
C
5

12、判断下列代码是否正确

class Super { 
	int i = 0; 
	public Super(String s) { 
		i = 1; 
	} 
}
class Demo extends Super { 
	public Demo(String s) {
		//默认有一句话super(); 去找父类的无参构造,但是没找到,
		//直接编译错。如何修改? 
		super(s);
		i = 2;
	}
	public static void main(String[] args) { 
		Demo d = new Demo("yes"); 
		System.out.println(d.i); 
	}
}

2

13、判断

//阅读以下代码,可以正常填入class Sun中的方法的是 
class Father{ 
	public String test(){ 
		return "father";
	} 
}
class Sun extends Father{

}

A.public void test(){} 
B.public void test(String s){} 
C.public String test(int i){return "";} 
D.public int test(int i){return 1;} 
E.public int test(){}

B、C、D

练习:1、某汽车租赁公司出租多种车辆,车型及租金情况如下:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值