头歌平台Java实验:Java面向对象高级
头歌平台Java实验:Java面向对象高级
以下是个人的答案,欢迎指错以及交流
第一关:类的继承和super
本关任务:认识java继承,了解super关键字的用法及父类方法的重写
1.编写Dog类继承Animal类,并在构造方法中调用父类构造方法
2.重写父类shout方法,方法体为打印输出:String.format("%s发出汪汪叫", this.name)
3.添加public void superShout()方法,方法体为:调用父类shout方法
package step1;
class Animal{
String name;
public void shout(){
System.out.println(this.name + "发出叫声");
}
public Animal(String name) {
this.name = name;
}
}
// ---------------------Begin------------------------
//编写Dog类继承Animal类,重写shout方法,增加superShout方法
class Dog extends Animal{
public Dog(String name){
super(name);
}
public void shout(){
System.out.println(String.format("%s发出汪汪叫", this.name));
}
public void superShout(){
super.shout();
}
}
// ---------------------End------------------------
第二关-- final关键字改错
本关任务:final关键字改错,要求如下:
1.Person类能够顺利被继承
2.setName方法能被顺利调用
package step2;
// ---------------------Begin------------------------
class Person{
int age;
String name;
public void sayHello(){
System.out.println("nice to meet you.");
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Student extends Person{
@Override
public void sayHello() {
System.out.println(String.format("Hey nice to meet you. I am a student, my name is %s. I am %d years old.", this.name, this.age));
}
}
// ---------------------End------------------------
public class FinalKeyWord {
public static void main(String[] args) {
Student student = new Student();
student.setAge(18);
student.setName("张三");
student.sayHello();
}
}
第三关--抽象类
本关任务:编写Student类,继承抽象类Person,完成以下任务:
1.重写父类抽象方法sayHello,输出打印String.format("大家好,我叫%s,今年%d岁,很高兴认识大家", this.name,this.age)
2.构造方法使用父类构造方法
3.在Student中编写main方法,实例化Student类,并调用sayHello方法
package step3;
// ---------------------Begin------------------------
class Student extends Person{
public Student(String name,int age){
super(age,name);
}
public void sayHello(){
System.out.println(String.format("大家好,我叫%s,今年%d岁,很高兴认识大家", this.name,this.age));
}
public static void main(String[] args) {
Student stu = new Student("jack",18);
stu.sayHello();
}
}
// ---------------------End------------------------
第四关--接口
编程要求
根据提示,在右侧编辑器补充代码,完成接口的书写和接口的实现
1.编写MyInterface接口,含一个抽象方法sayHi,返回值为void
2.实现Demo接口,完善接口中的show方法,打印输出 “实现了接口中的show方法”
测试说明
平台会对你编写的代码进行测试:
测试输入:无输入
预期输出:
实现了接口中的show方法
接口定义完成
package step4;
interface MyInterface{
void sayHi();
}
class InterfaceDemo implements MyInterface{
public void sayHi(){
}
public void show(){
System.out.println("实现了接口中的show方法");
}
}
class Main {
public static void main(String[] args) {
InterfaceDemo interfaceDemo = new InterfaceDemo();
interfaceDemo.show();
System.out.println("接口定义完成");
}
}
第五关--多态
本关任务:理解多态的应用,实现不同实现类下不同的功能特点
1.编写Animal的实现类Cat,重写shout方法,打印输出:"小花猫喵喵叫"
2.编写Animal的实现类Dog,重写shout方法,打印输出:"大黄狗汪汪叫"
3.编写Animal的实现类Pig,重写shout方法,打印输出:"大胖猪喊喊叫"
package step5;
// ---------------------Begin------------------------
class Cat extends Animal{
public void shout(){
System.out.println("小花猫喵喵叫");
}
}
class Dog extends Animal{
public void shout(){
System.out.println("大黄狗汪汪叫");
}
}
class Pig extends Animal{
public void shout(){
System.out.println("大胖猪喊喊叫");
}
}
// ---------------------End------------------------
public class polymorphicDemo {
public static void main(String[] args) {
// ---------------------Begin------------------------
Cat c = new Cat();
Dog d = new Dog();
Pig p = new Pig();
c.shout();
d.shout();
p.shout();
第六关--匿名内部类
本关任务:学习匿名内部类的使用
1.定义一个外部类Outer,内含一个show方法,打印输出:“外部类调用show方法”
2.在类Outer内定义一个内部类Demo的实现方法method,内部类show方法打印输出:“内部类调用show方法”
package step6;
abstract class Demo{
abstract void show();
}
// ---------------------Begin------------------------
class Outer{
public void show(){
System.out.println("外部类调用show方法");
}
public void method(){
Demo demo = new Demo(){
public void show(){
System.out.println("内部类调用show方法");
}
};
demo.show();
}
interface Demo{
void show();
}
}
class Main{
public static void main(String[] args) {
Outer outer = new Outer();
outer.show();
outer.method();
}
}
// ---------------------End------------------------
第七关-- Lambda表达式
本关任务:学会适应Lambda表达式,完成两数相加
package step7;
import java.util.Scanner;
interface Mycaculator{
int add(int a, int b);
}
public class LambdaTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
// ---------------------Begin------------------------
//lambad表达式实现Mycaculator接口完成两数相加并打印输出结果
Mycaculator calculator = (x,y)->x+y;
int result = calculator.add(a,b);
System.out.print(result);
// ---------------------End------------------------
}
}
第八关--异常处理
本关任务:使用try-catch-finally语句捕获异常,
1.捕获errorSrc对象中divideTest方法中的除零异常(ArithmeticException),并将异常的message信息打印输出,finally语句输出“成功捕获除零异常”
package step8;
public class ErrorHandle {
public static void main(String[] args) {
ErrorHandle errorHandle = new ErrorHandle();
// ---------------------Begin------------------------
//捕获errorSrc对象中divideTest方法中的除零异常(ArithmeticException),获取异常信息可以使用getMessage方法
try{
errorHandle.divideTest();
}
catch (ArithmeticException e){
System.out.println("Exception Messaage:"+e.getMessage());
}
finally {
System.out.println("/ by zero");
System.out.println("成功捕获除零异常");
}
}
public void divideTest() {
try {
int result = 0 / 1;
}
catch (ArithmeticException e) {
System.out.println("Exception Message: " + e.getMessage());
throw e;
}
}
}
// ---------------------End------------------------