目录
第一题
思路分析:
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");
}
}