• java实验(头歌)--面向对象封装继承和多态


    快速完成实验的方法:
    把对应题目的主函数替换,其他复制粘贴

    第一题

    请添加图片描述

    public class TestPersonDemo {
    	public static void main(String[] args) {
    		/********* begin *********/
    		// 声明并实例化一Person对象p
    
    		// 给p中的属性赋值
    
    		// 调用Person类中的talk()方法
    
    		/********* end *********/
    
    	}
    }
    
    // 在这里定义Person类
    class Person {
    	/********* begin *********/
    
    	/********* end *********/
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    答案:

    // 把主函数替换掉
    public static void main(String[] args) {
        /********* begin *********/
        // 声明并实例化一Person对象p
        Person p = new Person();
        // 给p中的属性赋值
        p.setName("张三");
        p.setAge(18);
        // 调用Person类中的talk()方法
        p.talk();
        /********* end *********/
    
    }
    
    // 在这里定义Person类
    class Person {
        /********* begin *********/
        private String name;
        private  int age;
    
        public void talk()
        {
            System.out.println("我是:"+getName()+",今年:"+getAge()+"岁");
        }
        public Person() {
        }
    
        public Person(String name, int age) {
            this.name = name;
            this.age = 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;
        }
    /********* end *********/
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    第二题

    请添加图片描述

    public class extendsTest {
    	public static void main(String args[]) {
    		// 实例化一个Cat对象,设置属性name和age,调用voice()和eat()方法,再打印出名字和年龄信息
    		/********* begin *********/
    
    		/********* end *********/
    
    		// 实例化一个Dog对象,设置属性name和age,调用voice()和eat()方法,再打印出名字和年龄信息
    		/********* begin *********/
    
    		/********* end *********/
    
    	}
    }
    
    class Animal {
    	/********* begin *********/
    
    	/********* end *********/
    
    }
    
    class Cat extends Animal {
    	// 定义Cat类的voice()和eat()方法
    	/********* begin *********/
    
    	/********* end *********/
    }
    
    class Dog extends Animal {
    	// 定义Dog类的voice()和eat()方法
    	/********* begin *********/
    
    	/********* end *********/
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    答案:

        public static void main(String args[]) {
            // 实例化一个Cat对象,设置属性name和age,调用voice()和eat()方法,再打印出名字和年龄信息
            /********* begin *********/
            Cat cat = new Cat();
            cat.setName("大花猫");
            cat.setAge(6);
            cat.voice();
            cat.eat();
            /********* end *********/
            System.out.println(cat.getName()+cat.getAge()+"岁");
            // 实例化一个Dog对象,设置属性name和age,调用voice()和eat()方法,再打印出名字和年龄信息
            /********* begin *********/
            Dog dog = new Dog();
            dog.setName("大黑狗");
            dog.setAge(8);
            dog.voice();
            dog.eat();
            /********* end *********/
            System.out.println(dog.getName()+dog.getAge()+"岁");
            /********* end *********/
    
        }
    
    class Animal {
        /********* begin *********/
            private String name;
            private int age;
    
        public Animal() {
        }
    
        public Animal(String name, int age) {
            this.name = name;
            this.age = 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;
        }
        /********* end *********/
    
    }
    
    class Cat extends Animal {
        // 定义Cat类的voice()和eat()方法
        /********* begin *********/
        public void voice()
        {
            System.out.println(getName()+"喵喵叫");
        }
        public void eat()
        {
            System.out.println(getName()+"吃鱼");
        }
        /********* end *********/
    }
    
    class Dog extends Animal {
        // 定义Dog类的voice()和eat()方法
        /********* begin *********/
        public void voice()
        {
            System.out.println(getName()+"汪汪叫");
        }
        public void eat()
        {
            System.out.println(getName()+"吃骨头");
        }
        /********* end *********/
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83

    第三题

    请添加图片描述

    public class superTest {
    	public static void main(String[] args) {
    		// 实例化一个Student类的对象s,为Student对象s中的school赋值,打印输出信息
    		/********* begin *********/
    
    		/********* end *********/
    	}
    }
    
    class Person {
    	/********* begin *********/
    
    	/********* end *********/
    }
    
    class Student extends Person {
    	/********* begin *********/
    
    	/********* end *********/
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    答案:

    public static void main(String[] args) {
            // 实例化一个Student类的对象s,为Student对象s中的school赋值,打印输出信息
            /********* begin *********/
            Student s = new Student("张三",18,"哈佛大学");
            System.out.println("姓名:"+s.getName()+",年龄:"+s.getAge()+",学校:"+s.getSchool());
            /********* end *********/
        }
    
    
    class Person {
        /********* begin *********/
        private String name;
        private int age;
    
        public Person() {
        }
    
        public Person(String name, int age) {
            this.name = name;
            this.age = 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;
        }
    /********* end *********/
    }
    
    class Student extends Person {
        /********* begin *********/
        private String school;
        public Student(String name,int age,String school)
        {
            super(name, age);
            this.school = school;
        }
    
        public String getSchool() {
            return school;
        }
    
        public void setSchool(String school) {
            this.school = school;
        }
    /********* end *********/
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58

    第四题

    请添加图片描述

    	public static void main(String[] args) {
    		// 实例化子类对象s,调用talk()方法打印信息
    		/********* begin *********/
    
    		/********* end *********/
    		
    	}
    
    class Person {
    	/********* begin *********/
    
    	/********* end *********/
    }
    
    class Student extends Person {
    	/********* begin *********/
    
    	/********* end *********/
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    第五题

    请添加图片描述

    	public static void main(String[] args) {
    		/********* begin *********/
    		// 分别实例化Student类与Worker类的对象,并调用各自构造方法初始化类属性。
    		
    		// 分别调用各自类中被复写的talk()方法 打印信息。
    		
    		/********* end *********/
    		
    	}
    
    
    // 声明一个名为Person的抽象类,在Person中声明了三个属性name age occupation和一个抽象方法——talk()。
    abstract class Person {
    	/********* begin *********/
    
    	/********* end *********/
    }
    
    // Student类继承自Person类,添加带三个参数的构造方法,复写talk()方法 返回姓名、年龄和职业信息
    class Student extends Person {
    	/********* begin *********/
    
    	/********* end *********/
    }
    
    // Worker类继承自Person类,添加带三个参数的构造方法,复写talk()方法 返回姓名、年龄和职业信息
    class Worker extends Person {
    	/********* begin *********/
    
    	/********* end *********/
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    答案:

    public static void main(String[] args) {
            /********* begin *********/
            // 分别实例化Student类与Worker类的对象,并调用各自构造方法初始化类属性。
            Student stu = new Student("张三",20,"学生");
            Worker worker = new Worker("李四",30,"工人");
            // 分别调用各自类中被复写的talk()方法 打印信息。
            stu.talk();
            worker.talk();
            /********* end *********/
    
        }
    
    
    // 声明一个名为Person的抽象类,在Person中声明了三个属性name age occupation和一个抽象方法——talk()。
    abstract class Person {
        /********* begin *********/
        String name;
        int age;
        String occupation;
    
        public Person() {
        }
    
        public Person(String name, int age, String occupation) {
            this.name = name;
            this.age = age;
            this.occupation = occupation;
        }
    
        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;
        }
    
        public String getOccupation() {
            return occupation;
        }
    
        public void setOccupation(String occupation) {
            this.occupation = occupation;
        }
        public abstract void talk();
    /********* end *********/
    }
    
    // Student类继承自Person类,添加带三个参数的构造方法,复写talk()方法 返回姓名、年龄和职业信息
    class Student extends Person {
        public Student(String name, int age, String occupation) {
            super(name, age, occupation);
        }
    
        /********* begin *********/
    
        @Override
        public void talk() {
            System.out.println("学生——>姓名:"+getName()+",年龄:"+getAge()+",职业:"+getOccupation()+"!");
        }
    /********* end *********/
    }
    
    // Worker类继承自Person类,添加带三个参数的构造方法,复写talk()方法 返回姓名、年龄和职业信息
    class Worker extends Person {
        public Worker(String name, int age, String occupation) {
            super(name, age, occupation);
        }
    
        /********* begin *********/
    
        @Override
        public void talk() {
            System.out.println("工人——>姓名:"+getName()+",年龄:"+getAge()+",职业:"+getOccupation()+"!");
        }
        /********* end *********/
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86

    第六题

    请添加图片描述

    public static void main(String args[]) {
    		Bike1 obj = new Bike1();
    		obj.run();
    
    		Honda honda = new Honda();
    		honda.run();
    
    		Yamaha yamaha = new Yamaha();
    		yamaha.run();
    	}
    
    //不可以修改 final 变量的值
    // final方法,不可以重写
     不可以扩展 final 类
        //请在此添加你的代码
        /********** Begin *********/
    	class Bike1 {
    	final int speedlimit = 90;
    
    	void run() {
    		speedlimit = 120; 
    		System.out.println("speedlimit=120");
    	}
    
    }
    
    class Bike2 {
    	final void run() {
    		System.out.println("running");
    	}
    }
    
    class Honda extends Bike2 {
    	void run() { 
    		System.out.println("running safely with 100kmph");
    	}
    
    }
    
    final class Bike3 {
    }
    
    class Yamaha extends Bike3 { 
    	void run() {
    		System.out.println("running safely with 100kmph");
    	}
    
    }
        /********** End **********/
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    答案:

    main 方法里不用改
    
    //不可以修改 final 变量的值
    // final方法,不可以重写
     不可以扩展 final 类
    //请在此添加你的代码
    /********** Begin *********/
    class Bike1 {
         int speedlimit = 90;
    
        void run() {
            speedlimit = 120;
            System.out.println("speedlimit=120");
        }
    
    }
    
    class Bike2 {
        void run() {
            System.out.println("running");
        }
    }
    
    class Honda extends Bike2 {
        void run() {
            System.out.println("running safely with 100kmph");
        }
    
    }
    
    class Bike3 {
    }
    
    class Yamaha extends Bike3 {
        void run() {
            System.out.println("running safely with 100kmph");
        }
    
    }
    /********** End **********/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    第七题

    请添加图片描述

    public static void main(String[] args) {
    		// 实例化一Student的对象s,并调用talk()方法,打印信息
    		/********* begin *********/
    
    		/********* end *********/
    
    	}
    
    // 声明一个Person接口,并在里面声明三个常量:name、age和occupation,并分别赋值,声明一抽象方法talk()
    interface Person {
    	/********* begin *********/
    
    	/********* end *********/
    }
    
    // Student类继承自Person类 复写talk()方法返回姓名、年龄和职业信息
    class Student implements Person {
    	/********* begin *********/
    
    	/********* end *********/
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    答案:

    public static void main(String[] args) {
            // 实例化一Student的对象s,并调用talk()方法,打印信息
            /********* begin *********/
            Student s = new Student();
            s.talk();
            /********* end *********/
    
        }
    
    
    // 声明一个Person接口,并在里面声明三个常量:name、age和occupation,并分别赋值,声明一抽象方法talk()
    interface Person {
        /********* begin *********/
        static final String name = "张三";
        static final int age =18;
        static final String occupation = "学生";
    
        public abstract void talk();
        /********* end *********/
    }
    
    // Student类继承自Person类 复写talk()方法返回姓名、年龄和职业信息
    class Student implements Person {
        /********* begin *********/
        @Override
        public void talk() {
            System.out.println("学生——>姓名:"+name+",年龄:"+age+",职业:"+occupation+"!");
        }
    /********* end *********/
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    第八题

    请添加图片描述

    public static void main(String[] args) {
    		// 以多态方式分别实例化子类对象并调用eat()方法
    		/********* begin *********/
    
    		/********* end *********/
    	}
    
    
    
    // Animal类中定义eat()方法
    class Animal {
    	/********* begin *********/
    
    	/********* end *********/
    }
    
    // Dog类继承Animal类 复写eat()方法
    class Dog extends Animal {
    	/********* begin *********/
    
    	/********* end *********/
    }
    
    // Cat类继承Animal类 复写eat()方法
    class Cat extends Animal {
    	/********* begin *********/
    
    	/********* end *********/
    }
    
    // Lion类继承Animal类 复写eat()方法
    class Lion extends Animal {
    	/********* begin *********/
    
    	/********* end *********/
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    答案:

    public static void main(String[] args) {
            // 以多态方式分别实例化子类对象并调用eat()方法
            /********* begin *********/
            Animal dog = new Dog();
            Animal cat = new Cat();
            Animal lion = new Lion();
            dog.eat();
            cat.eat();
            lion.eat();
            /********* end *********/
        }
    
    
    // Animal类中定义eat()方法
    class Animal {
        /********* begin *********/
        public void eat()
        {
    
        }
        /********* end *********/
    }
    
    // Dog类继承Animal类 复写eat()方法
    class Dog extends Animal {
        /********* begin *********/
        public void eat()
        {
            System.out.println("eating bread...");
        }
        /********* end *********/
    }
    
    // Cat类继承Animal类 复写eat()方法
    class Cat extends Animal {
        /********* begin *********/
        @Override
        public void eat() {
            System.out.println("eating rat...");
        }
        /********* end *********/
    }
    
    // Lion类继承Animal类 复写eat()方法
    class Lion extends Animal {
        /********* begin *********/
        @Override
        public void eat() {
            System.out.println("eating meat...");
        }
        /********* end *********/
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
  • 相关阅读:
    开源点云非刚性配准(non-rigid registratioin)算法
    主动写入流对@ResponseBody注解的影响 | 京东云技术团队
    Linux常见的文件系统
    VirtualBox Ubuntu扩展虚拟机磁盘空间
    Java短信验证码生成
    CAN Ape 标定与诊断
    Es 拼音搜索无法高亮
    基于JAVA+SpringBoot+Vue的前后端分离的公益慈善服务平台
    Vue中的计算属性
    LuatOS-SOC接口文档(air780E)--lcdseg - 段式lcd
  • 原文地址:https://blog.csdn.net/m0_73282576/article/details/133675072