当前位置: 首页 > article >正文

【韩顺平Java笔记】第8章:面向对象编程(中级部分)【354-358】

354. 355. 本章作业14 15


Person.java

package com.m.homework13;

public class Person {
    private String name;
    private int age;
    private char gender; //性别

    public Person(String name, int age, char gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    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 void play(){
        System.out.print(name + "爱玩");
    }

    public char getGender() {
        return gender;
    }

    public void setGender(char gender) {
        this.gender = gender;
    }

    public void printInfo(){
        System.out.println("姓名:" + name);
        System.out.println("年龄:" + age);
        System.out.println("性别:" + gender);
    }

}

Student.java

package com.m.homework13;

public class Student extends Person {
    private String stuId; //学号

    public Student(String name, int age, char gender, String stuId) {
        super(name, age, gender);
        this.stuId = stuId;
    }

    public String getStuId() {
        return stuId;
    }

    public void setStuId(String stuId) {
        this.stuId = stuId;
    }

    public void study(){
        System.out.println("我承诺,我会好好学习");
    }

    @Override
    public void play() {
        super.play();
        System.out.println("足球");
    }

    @Override
    public void printInfo() {
        System.out.println("学生的信息:");
        super.printInfo();
        System.out.println("学号:" + stuId);
    }
}

Teacher.java

package com.m.homework13;

public class Teacher extends Person{
    private int workAge; //工龄

    public Teacher(String name, int age, char gender, int workAge) {
        super(name, age, gender);
        this.workAge = workAge;
    }

    @Override
    public void printInfo() {
        System.out.println("老师的信息:");
        super.printInfo();
        System.out.println("工龄:" + workAge);
    }

    public void teach(){
        System.out.println("我承诺,我会认真教学");
    }

    @Override
    public void play() {
        super.play();
        System.out.println("象棋");
    }
}

Homework13.java

package com.m.homework13;

public class Homework13 {
    public static void main(String[] args) {
        Person[] persons = new Person[4];
        persons[0] = new Student("田所浩二", 24, '男', "114514");
        persons[1] = new Student("波奇酱", 18, '女', "1919" );
        persons[2] = new Teacher("我修院", 26, '男', 1);
        persons[3] = new Teacher("德川", 26, '男', 1);
        Homework13 homework13 = new Homework13();
        homework13.bubbleSort(persons);
        homework13.printResults(persons);

    }
    //自动转型的方法
    public void test(Person p){
        if(p instanceof Student){
            ((Student) p).study();
        }else if(p instanceof Teacher){
            ((Teacher) p).teach();
        }
    }
    //冒泡排序方法
    public void bubbleSort(Person[] persons){
        //冒泡排序按年龄排序
        Person tmp = null; //冒泡排序用的临时引用
        //从i到倒数第二个元素,方便给最后一个元素交换
        for(int i = 0; i < persons.length - 1 ; i++){
            for(int j = 0; j < persons.length - i - 1; j++){
                if(persons[j].getAge() > persons[j+1].getAge()){
                    tmp = persons[i];
                    persons[i] = persons[j];
                    persons[j] = tmp;
                }
            }
        }
    }
    //打印Person数组信息
    public void printResults(Person[] persons){
        //打印数组,使用向下转型
        for(int i = 0; i < persons.length; i++){
            System.out.println("-------------------------");
            if(persons[i] instanceof Student){
                ((Student)persons[i]).printInfo();
                ((Student)persons[i]).study();
                test(persons[i]);
            }
            if(persons[i] instanceof Teacher){
                ((Teacher)persons[i]).printInfo();
                ((Teacher)persons[i]).teach();
                ((Teacher)persons[i]).play();
            }
        }
    }

}

运行结果:
-------------------------
学生的信息:
姓名:波奇酱
年龄:18
性别:女
学号:1919
我承诺,我会好好学习
我承诺,我会好好学习
-------------------------
学生的信息:
姓名:田所浩二
年龄:24
性别:男
学号:114514
我承诺,我会好好学习
我承诺,我会好好学习
-------------------------
老师的信息:
姓名:我修院
年龄:26
性别:男
工龄:1
我承诺,我会认真教学
我修院爱玩象棋
-------------------------
老师的信息:
姓名:德川
年龄:26
性别:男
工龄:1
我承诺,我会认真教学
德川爱玩象棋

356. 本章作业15


无参构造器先执行this(“hello”),然后进入有参构造器。

357. 358. 本章作业16 17


http://www.kler.cn/a/518298.html

相关文章:

  • AI模型提示词(prompt)优化-实战(一)
  • css遇到的一些问题
  • Kafka生产者ACK参数与同步复制
  • 简洁明了:介绍大模型的基本概念(大模型和小模型、模型分类、发展历程、泛化和微调)
  • 人工智能丨视觉识别在自动化测试中的应用
  • npm link 作用
  • 如何理解 Web3 背后的技术:区块链与去中心化存储
  • PHP异步非阻塞MySQL客户端连接池
  • 1. 小众但非常实用的 CSS 属性
  • 69.在 Vue 3 中使用 OpenLayers 拖拽实现放大区域的效果(DragPan)
  • 如何使用phpStudy在Windows系统部署静态站点并实现无公网IP远程访问
  • 2025年美赛C题:奥运奖牌榜模型 解析及Python代码实现
  • 【xcode 16.2】升级xcode后mac端flutter版的sentry报错
  • Arduino大师练成手册 -- 读取红外接收数据
  • 国产编辑器EverEdit - 命令窗口应用详解
  • WPF实战案例 | C# WPF实现计算器源码
  • Vue中设置报错页面和“Uncaught runtime errors”弹窗关闭
  • 高级java每日一道面试题-2025年01月24日-框架篇[SpringMVC篇]-SpringMVC常用的注解有哪些?
  • cursor远程调试Ubuntu以及打开Ubuntu里面的项目
  • ray.rllib 入门实践-4: 构建算法