头歌平台Java实验:Java面向对象高级

2024-06-04 4121阅读

头歌平台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------------------------


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]