面向对象练习题(4)

目录

第一题

第二题

第三题


第一题

思路分析:

1.首先我们定义了一个Person类,然后写出对应的属性和构造器,等等,注意要重写一下toString方法

2.我们创建一个Person类型的数组,该数组可以存放Person类型的元素

3.因为题目要求,我们在输出的时候,要按照age进行从大到小进行排序,所以我们使用冒泡排序,注意在比较的时候,通过p[i].getAge(),去获得年龄,因为我们讲年龄这个属性私有化了,因此不可以之间访问,所以我们去调用公共的get方法,去访问

4.在根据年龄比较完之后,在交换的时候,交换的不是年龄,而是一个Person因此在定义辅助变量进行交换的时候,要定义成Person类型,并且是对数组中的元素进行交换

package idea.homework;

public class homework01 {
    public static void main(String[] args) {
    /*
    1.定义一个Person类(name,age,job,初始化Person对象数组,有3个person对象,并
    按照 age从 大到小进行排序,提示,使用冒泡排序
     */


        //创建一个大小为3的Person数组
        Person[] p = new Person[3];
        //给Person数组进行赋值
        p[0] = new Person("jack", 10, "老师");
        p[1] = new Person("tom", 30, "程序员");
        p[2] = new Person("many", 20, "学生");

        //遍历数组,按照年龄进行排序
        for (int i = 0; i < p.length - 1; i++) {
            for (int j = 0; j < p.length - 1 - i; j++) {
                //注意这里比较的是年龄,但是交换的是Person中数组的内容,并不是判断年龄,交换的也就是年龄
                if (p[j].getAge() > p[j + 1].getAge()) {
                    Person tmp = p[j];
                    p[j] = p[j + 1];
                    tmp = p[j + 1];

                }
            }
            System.out.println();
        }

        //遍历数组输出
        for (int i = 0; i < p.length; i++) {
            System.out.println(p[i]);//该写法等价于P[i].toString();
        }

    }
}

class Person {
    private String name;
    private int age;
    private String job;

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

    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 getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    //重写了toString()方法
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", job='" + job + '\'' +
                '}';
    }
}

第二题

思路分析:

1.这题我们只需要清楚的知道四种访问修饰符的权限即可

2.看一张表格就可以非的清楚,就可以清楚的知道

所以结论就是

public 可以访问 同类,同胞,子类,不同包

protracted 可以访问 同类,同胞,子类

默认 可以访问 同类,同胞

private 可以访问 同类

访问级别 访问控制修饰符 同类 同包 子类 不同包
公开 public
受保护 protracted ×
默认 没有修饰符 × ×
私有 private × × ×
package idea.homework;

public class homework02 {
    public static void main(String[] args) {
        //2.写出四种访问修饰符和各自的访问权限
        /*
        有四种访问修饰符
        分别是public公开的     protected受保护的    默认     private私有的
        public 可以访问,同包,同类,子类,不同包
        protected  可以访问  可以访问,同包,同类,子类
        默认访问修饰符  可以访问,同包,同类
        private  可以访问,同包
         */


    }
}

第三题


思路分析:

1.这里用到了继承的知识,和封装

2.我们在定义在定义子类的时候,在继承父类之后,之所以会报错是因为,父类的无参构造器,被覆盖了,除非我们显示的定义一些父类的无参构造器,否则,在创建完子类之后,直接去继承父类,我们需要使用super关键字,去指定父类的那个构造器。否则会报错

3.我们创建的子类 ,没有什么其他的属性,只需要重写一下父类的方法即可

@Override是重写的意思

package idea.homework;

public class homework03 {
    public static void main(String[] args) {
        /*
        3.编写Teacher类
        (1)要求有属性“姓名name” “年龄age”,“职称post” “基本工资salary”
        (2)编写业务方法,introduce(),实现输出一个教师的信息。
        (3)编写教师类的三个子类:教授类、副教授类、讲师类。工资级别分别为:教授为1.3、副教授为1.2、讲师类1.1。在三个子类里面都重写父类的introduce(方法。
        (4)定义并初始化一个老师对象,调用业务方法,实现对象基本信息的后台打印.
         */

        professor professor = new professor("jack", 32, "教授", 11000, 1.2);
        professor.introduce();
        lecturer lecturer = new lecturer("tom", 32, "讲师", 11000, 1.1);
        lecturer.introduce();
    }
}

class lecturer extends Teacher {

    public lecturer(String name, int age, String post, double salary, double level) {
        super(name, age, post, salary, level);
    }

    @Override
    public void introduce() {
        System.out.println("这是讲师的信息");
        super.introduce();
    }
}


class associateProfessor extends Teacher {

    public associateProfessor(String name, int age, String post, double salary, double level) {
        super(name, age, post, salary, level);
    }

    @Override
    public void introduce() {
        System.out.println("这是副教授的信息");
        super.introduce();
    }
}

class professor extends Teacher {
    public professor(String name, int age, String post, double salary, double level) {
        super(name, age, post, salary, level);
    }

    @Override
    public void introduce() {
        System.out.println("这是教授的信息");
        super.introduce();
    }
}

class Teacher {
    private String name;
    private int age;
    private String post;
    private double salary;

    private double level;//级别

    public Teacher(String name, int age, String post, double salary, double level) {
        this.name = name;
        this.age = age;
        this.post = post;
        this.salary = salary;
        this.level = level;
    }


    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 getPost() {
        return post;
    }

    public void setPost(String post) {
        this.post = post;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public double getLevel() {
        return level;
    }

    public void setLevel(double level) {
        this.level = level;
    }

    public void introduce() {
        System.out.println("名字=" + name + "\t" + "年龄=" + age + "\t" + "职称=" + post + "\t" + "工资=" + salary + "\t" + "级别=" + level + "\t");
    }
}


猜你喜欢

转载自blog.csdn.net/weixin_53616401/article/details/129769446