先把作业打下来,然后一题题做。

题目1:1.定义一个Person类 {name, age, job},初始化Person对象数组,有3个person对象,并按照age从大到小进行排序,提示,使用冒泡排序Homework01.java


测试类

package HomeWork;public class Homework01 {public static void main(String[] args) {Person[] p = new Person[5];p[0] = new Person("zhang",23,"工程师");p[1] = new Person("zhao",26,"工程师");p[2] = new Person("qian",21,"工程师");p[3] = new Person("shun",22,"工程师");p[4] = new Person("li",24,"工程师");System.out.println("排序之前...");for(int i =0;i<p.length;i++){System.out.println(p[i].toString());}//开始排序....for(int i = 0;i<p.length-1;i++){for(int j = 0;j<p.length-1-i;j++){if(p[j].age > p[j+1].age ){Person tmp = p[j];p[j] = p[j+1];p[j+1] = tmp;}}}System.out.println("排序之后...");for(int i =0;i<p.length;i++){System.out.println(p[i].toString());}}
}
class Person{public String name;public int age;public String job;public Person(String name, int age, String job) {this.name = name;this.age = age;this.job = job;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +", job='" + job + '\'' +'}';}
}

题目2:写出四种访问修饰符和各自的访问权限 Homework02.java

自身 同包子类 不同包子类 同包类 其他类
private 访问 继承 继承 访问 访问
package 访问 继承 继承 访问 访问
protected 访问 继承 继承 访问 访问
public 访问 继承 继承 访问 访问

题目3:编写老师类HomeworkO3.java

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

效果

代码

package HomeWork;public class HomeWork02 {public static void main(String[] args) {Teacher t1 = new Professor("张",23,"教授",222222.0);Teacher t2 = new AssProfessor("张",24,"副教授",2000.0);Teacher t3 = new Lecturer("王",35,"讲师",900000.0);System.out.println(t1.introduce());System.out.println(t2.introduce());System.out.println(t3.introduce());}
}class Teacher{public String name;public int age;public String post;public double salary;public Teacher(String name, int age, String post, double salary) {this.name = name;this.age = age;this.post = post;this.salary = salary;}public String introduce() {return "Teacher{" +"name='" + name + '\'' +", age=" + age +", post='" + post + '\'' +", salary=" + salary +'}';}}
class Professor extends Teacher{public Professor(String name, int age, String post, double salary) {super(name, age, post, salary);}public String introduce() {return "Teacher{" +"name='" + name + '\'' +", age=" + age +", post='" + post + '\'' +", salary=" + salary*1.3 +'}';}}class AssProfessor extends Teacher {public AssProfessor(String name, int age, String post, double salary) {super(name, age, post, salary);}public String introduce() {return "Teacher{" +"name='" + name + '\'' +", age=" + age +", post='" + post + '\'' +", salary=" + salary*1.2 +'}';}
}class Lecturer extends Teacher{public Lecturer(String name, int age, String post, double salary) {super(name, age, post, salary);}public String introduce() {return "Teacher{" +"name='" + name + '\'' +", age=" + age +", post='" + post + '\'' +", salary=" + salary*1.1 +'}';}
}

题目4 通过继承实现员工工资核算打印功能

父类:员工类
子类:部门经理类、普通员工类
(1)部门经理工资=1000+单日工资天数等级(1.2)。(2)普通员工工资=单日工资天数等级(1.0) ;
(3)员工属性:姓名,单日工资,工作天数
(4)员工方法(打印工资)
(5)普遍员工及部门经理都是员工子类,需要重写打印工资方法。
(5)定义并初始化普通员工对象,调用打印工资方法输入工资,定义并初始化部门经理对象,调用打印工资方法输入工咨

效果

代码

package HomeWork;public class HomeWork03 {public static void main(String[] args) {Worker worker = new Worker("张",260,20);System.out.println(worker.PrintSalary());Manager manager = new Manager("王",300,26);System.out.println(manager.PrintSalary());}
}
class Emp{public String name;public int PerSalary;public int WorkCount;public Emp(String name, int perSalary, int workCount) {this.name = name;PerSalary = perSalary;WorkCount = workCount;}public String PrintSalary(){return "名字:" + this.name  + "工资为:" + this.PerSalary*this.WorkCount + "元";}
}
class Manager extends Emp {public Manager(String name, int perSalary, int workCount) {super(name, perSalary, workCount);}@Overridepublic String PrintSalary() {return "名字:" + this.name  + "工资为:" + (1000+this.PerSalary*this.WorkCount*1.2) + "元";}
}class Worker extends Emp{public Worker(String name, int perSalary, int workCount) {super(name, perSalary, workCount);}@Overridepublic String PrintSalary() {return "名字:" + this.name  + "工资为:" + this.PerSalary*this.WorkCount + "元";}
}

题目5 设计父类—员工类。子类:工人类,农民类,教师类,科学家类,服务生类。

(1)其中工人,农民,服务生只有基本工资
(2)教师除基本工资外,还有课酬(元/天)(3)科学家除基本工资外还有年终奖
(4)编写一个测试类,将各种类型的员工的全年工资打印出来

效果

代码

package HomeWork;public class HomeWork04 {public static void main(String[] args) {Emp[] ep = new Emp[5];ep[0] = new Farmer(2200.0);ep[1] = new Worker(2200.0);ep[2] = new Serve(2200.0);ep[3] = new teacher(2200.0,500.0);ep[4] = new scientist(2200.0,999999.0);for(int i =0;i< ep.length;i++){ep[i].printSalary();}}
}
class Emp{public double salary;public Emp(double salary) {this.salary = salary;}public void printSalary(){System.out.println("全年工资为:" + salary*12);}
}
class Worker extends Emp{public Worker(double salary) {super(salary);}@Overridepublic void printSalary() {System.out.println("工人的工资为:" + this.salary*12);}
}
class Farmer extends Emp{public Farmer(double salary) {super(salary);}@Overridepublic void printSalary() {System.out.println("农民的工资为:" + this.salary*12);}
}
class Serve extends Emp{public Serve(double salary) {super(salary);}@Overridepublic void printSalary() {System.out.println("服务员的工资为:" + this.salary*12);}
}
class teacher extends Emp{public double fee;public teacher(double salary,double fee) {super(salary);this.fee = fee;}@Overridepublic void printSalary() {System.out.println("教师的工资为:" + (this.salary+this.fee)*12);}
}
class scientist extends Emp{public double yearfee;public scientist(double salary,double yearfee) {super(salary);this.yearfee = yearfee;}@Overridepublic void printSalary() {System.out.println("科学家的工资为:" + ((this.salary*12)+this.yearfee));}
}

题目6:6.在父类和子类中通过this和super都可以调用哪些属性和方法,假定Grand.Father和Son在同一个包

Father 访问:
//super可以访问 name与g1方法
//this可以访问 name g1 id score f方法
Sion类可以访问
//super可以访问 id name 父类 g1 f1
//this可以访问 id name 自己类的g1 自己类的f1,自己类的show()


package HomeWork;public class HomeWork06 {}class Grand{String name ="AA";private int age = 100;public void g1(){}
}class Father extends Grand {String id = "001";private double score;public void f1(){}
}class Son extends Father{String name = "bb";public void g1(){}private void show(){}}
}

题目7:下面代码运行效果

package HomeWork;public class HomeWork05 {public static void main(String[] args) {new Demo().test();new Demo("John").test();}}class Test{String name = "Rose";Test(){System.out.println("Test");}Test(String name){this.name = name;}}
class Demo extends Test{String name = "Jack";Demo(){super();System.out.println("Demo");}Demo(String s){super(s);}public void test(){System.out.println(super.name);System.out.println(this.name);}}

效果

题目8:存款取款

效果

代码

package HomeWork;public class HomeWork08 {public static void main(String[] args) {SavingAccount sv = new SavingAccount(5500);sv.deposit(500);System.out.println(sv.getBalance());}
}
class BankAccount{private double balance;public BankAccount(double initialBalance){this.balance = initialBalance;}public void deposit(double amount){balance += amount;}public void withdraw(double amount){balance -= amount;}public double getBalance() {return balance;}public void setBalance(double balance){this.balance = balance;}
}class CheckinigAccount extends BankAccount{public CheckinigAccount(double initialBalance) {super(initialBalance);}public void deposit(double amount){super.deposit(amount-1);}public void withdraw(double amount){super.withdraw(amount+1);}
}class SavingAccount extends BankAccount{private  int cnt = 0;private double rate = 0.01;public SavingAccount(double initialBalance) {super(initialBalance);}//计数@Overridepublic void deposit(double amount) {if(cnt>3)super.deposit(amount-1);elsesuper.deposit(amount);cnt++;}@Overridepublic void withdraw(double amount) {if(cnt>3)super.withdraw(amount+1);elsesuper.withdraw(amount);cnt++;}public void setCnt(int cnt) {this.cnt = cnt;}public void earnMonthlyInterest(){cnt = 3;deposit(super.getBalance()*rate);}
}

题目9:9.设计一个Point类,

其x和y坐标可以通过构造器提供。提供一个子类LabeledPoint,其构造器接受一个标签值和x,y坐标,比如:new LabeledPoint(“Black
Thursday” ,1929,230.07),写出对应的构造器即可

效果

题目不需要啥效果,main函数能运行就挺好。

代码

package HomeWork;public class HomeWork09 {public static void main(String[] args) {LabeledPoint lb = new LabeledPoint("Black",1929,230.07);}
}class Point {private double x;private double y;public Point(double x, double y) {this.x = x;this.y = y;}
}class LabeledPoint extends Point{private String label;public LabeledPoint(String label,double x, double y) {super(x, y);this.label = label;}
}

题目10 : 编写Doctor类{name, age, job, gender, sal}

相应的getter()和setter()方法,5个参数的构造器,重写父类的equals()方法: publicboolean equals(Object obj),并判断测试类中创建的两个对象是否相等。相等就是判断属性是否相同

效果

代码

package HomeWork;import java.util.Objects;public class HomeWork10 {public static void main(String[] args) {Doctor d1 = new Doctor("张三",45,"主任医师",'男',21000);Doctor d2 = new Doctor("李四",35,"副主任医师",'男',23000);Doctor d3 = new Doctor("张三",45,"主任医师",'男',21000);Doctor d4 = new Doctor("赵六",55,"副主任医师",'男',21000);System.out.println("d1 与 d3 相等么?" + d1.equals(d3));}
}
class Doctor{private String name;private int age;private String job;private char gender;private double salary;public Doctor(String name, int age, String job, char gender, double salary) {this.name = name;this.age = age;this.job = job;this.gender = gender;this.salary = salary;}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;}public char getGender() {return gender;}public void setGender(char gender) {this.gender = gender;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Doctor doctor = (Doctor) o;return age == doctor.age && gender == doctor.gender && Double.compare(doctor.salary, salary) == 0 && Objects.equals(name, doctor.name) && Objects.equals(job, doctor.job);}}

题目11:现有Person类

里面有方法run,eat,Student类继承了Person类,并重写了run方法,自定义了study()方法,试着写出对象向上转型和向下转型的代码,并写出各自都可以调用哪些方法,并写出方法输出什么?

向上转型可以输出
eat 与run
向下转型可以输出 eat ,run study

package HomeWork;public class HomeWork11 {public static void main(String[] args) {Person p = new Student();//eat runp = (Student) p;//p向下转型 eat run  study}
}
class Person{public void run() {System.out.println("person run");}public void eat() {System.out.println("person eat");}
}class Student extends Person {public void run(){System.out.println("student run");}public void study() {System.out.println("student study");}
}

题目12: ==与equals的区别

== 是一个比较运算符,在用于基本数据类型中,可以判断值是否相等,在用于引用类型中,可以判断两个对象是否相等。
equals是object类的方法,Java类都可以使用equals,不可以用于基本数据类型,可以默认判断两个对象是否相等,但是子类往往重写该方法,比较对象的属性是否相等。

题目13 案例题目描述:

(1)做一个Student类,Student类有名称(name),性别(sex),年龄(age),学号(stu_id),做合理封装,通过构造器在创建对象时将4个属性赋值。
(2)写一个Teacher类,Teacher类有名称(name),性别(sex),年龄(age),工龄(work_age),做合理封装,通过构造器在创建对象时将4个属性赋值。
(3)抽取一个父类Person类,将共同属性和方法放到Person类
(4)学生需要有学习的方法(study),在方法里写生“我承诺,我会好好学习。”。
(5)教师需要有教学的方法(teach),在方法里写上“我承诺,我会认真教学。”。
(6)学生和教师都有玩的方法(play),学会玩的是足球,老师玩的是象棋,此方法是返回字符串的,分别返回“xx爱玩足球”和“xx爱玩象棋”(其中x分别代表学生和老师的姓名)。因为玩的方法名称都一样,所以要求此方法定义在父类中,子类实现重写。
(7)定义多态数组,里面保存2个学生和2个教师,要求按年龄从高到低排序,
(8)定义方法,形参为Person类型,功能:调用学生的study或教师的teach方法

效果

代码

package HomeWork;public class HomeWork13 {public static void main(String[] args) {Person[] p = new Person[6];p[0] = new Student("张三",'男',26,"2022");p[1] = new Student("李四",'男',26,"2022");p[2] = new Student("王五",'女',25,"2023");p[3] = new teacher("赵琦",'男',26,12);p[4] = new teacher("李四",'男',26,12);p[5] = new teacher("李四",'男',26,12);for(int i = 0;i<p.length-1;i++){for(int j = 0;j<p.length-1-i;j++){if(p[j].getAge() > p[j+1].getAge() ){Person tmp = p[j];p[j] = p[j+1];p[j+1] = tmp;}}}for(int i=0;i<p.length;i++){method(p[i]);}}public static void method(Person p){if(p instanceof Student){((Student) p).PrintString();}else if(p instanceof teacher){((teacher) p).PrintString();}}
}class Person {private String name;private char sex;private int age;public int getAge() {return age;}public Person(String name, char sex, int age) {this.name = name;this.sex = sex;this.age = age;}public void play(String item){System.out.println(this.name + "爱玩" + item );}public void PrintString() {System.out.println("\n" +"姓名:" + name + "\n" +"年龄:" + age + "\n" +"性别:" + sex + "");}
}class Student extends Person {private String stu_id;public Student(String name, char sex, int age, String stu_id) {super(name, sex, age);this.stu_id = stu_id;}public void study(){System.out.println("我承诺,我会好好学习");}@Overridepublic void play(String item) {super.play(item);}@Overridepublic void PrintString() {System.out.print("学生的信息");super.PrintString();System.out.println("学号:" + stu_id);study();play("足球");System.out.println("------------------------");}
}class teacher extends Person {private int work_age;public teacher(String name, char sex, int age, int work_age) {super(name, sex, age);this.work_age = work_age;}public void teach(){System.out.println("我承诺,我会认真教学");}@Overridepublic void play(String item) {super.play(item);}@Overridepublic void PrintString() {System.out.print("教师的信息");super.PrintString();System.out.println("工龄:" + work_age);teach();play("象棋");System.out.println("------------------------");}
}

题目14 程序阅读题

效果

代码

package HomeWork;public class HomeWork14 {public static void main(String[] args) {C c = new C();}
}
class A{public A(){System.out.println("我是A类");}
}
class B extends A{public B(){System.out.println("我是B类的无参构造");}public B(String name){System.out.println(name + "我是B类的有参构造");}
}class C extends B {public C(){this("hello");}public C(String name) {super("hahha");System.out.println("我是C类有参构造");}
}

什么是多态,多态具体体现有哪些

答:多态是面向对象重要特征,是指父类中定义的属性和方法被子类继承之后,可以具有不同数据类型的行为。多态分为编译时多态与运行时多态,编译多态为静态多态,运行多态是动态的。继承在多态中必须存在有继承关系的子类和父类。

  • 重写,子类对父类中某些方法进行重新定义,在调用这些方法就会调用子类的方法。
  • 向上转型:在多态中需要将子类的引用赋给父类对象,只有这样引用才既能可以调用父类方法,又能调用子类方法。

java的动态绑定机制是什么?

方法看运行类型,属性看编译类型.
1.当调用对象的方法时,该方法会和对象的内存地址/运行类型绑定.
2.当调用对象的属性时,没有动态绑定机制,哪里声明,那里使用。

老韩Java第八章作业汇总(自做)相关推荐

  1. Java面试题大汇总,2021年附答案解析

    最新常Java面试题大汇总(含答案解析)发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全汇总,希望对大家有帮助哈 本套Java面试题大全,全的不能再全,哈哈~ ...

  2. 【月报】Java知音的四月汇总

    往期: Java知音的十月:[月报]Java知音十月汇总 Java知音的十一月:[月报]Java知音十一月汇总 Java知音的十二月:[月报]Java知音十二月汇总 Java知音的一月:[月报]Jav ...

  3. Java SpringBoot框架依赖汇总

    本文阅读格式更佳的版本:Java SpringBoot框架依赖汇总 SpringBoot是Spring家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程,提供了各种依赖项以简化构建 ...

  4. Java 锁相关知识汇总及锁升级

    Java 锁相关知识汇总及锁升级 锁的基础知识 什么是Synchronized 锁的四种状态 类相关信息 32位虚拟机对象头 64位虚拟机对象头 CAS 锁消除 锁粗化 Lock Record 偏向锁 ...

  5. Java经典面试题汇总200道

    超详细的Java学习资料汇总 Java经典面试题汇总 Java 基础 1. JDK 和 JRE 有什么区别? 2. == 和 equals 的区别是什么? 3. 两个对象的 hashCode()相同, ...

  6. 2017 《Java技术预备作业》

    Java技术预备作业 1.阅读邹欣老师的博客,谈谈你期望的师生关系是什么样的? 通过阅读邹欣老师的博客,我认为我所期望的师生关系应该是友好和睦, 互相尊重,互相关心,互利共赢的关系,学生能够从老师的授 ...

  7. 现任明教教主CCNA Security作业汇总

    现任明教教主CCNA Security第二天作业 我最近花了两个月的时间,为我的所有课程(CCNA Security+CCSP)制作了每一天的配套作 业,并且做了相应的视频讲解.本周我会每天共享一天我 ...

  8. OpenCV3 Java 机器学习使用方法汇总

    原文链接:OpenCV3 Java 机器学习使用方法汇总  前言 按道理来说,C++版本的OpenCV训练的版本XML文件,在java中可以无缝使用.但要注意OpenCV本身的版本问题.从2.4 到3 ...

  9. Java List面试题汇总

    转载自 Java List面试题汇总 1.你知道的List都有哪些? 2.List和Vector有什么区别? 3.List是有序的吗? 4.ArrayList和LinkedList的区别?分别用在什么 ...

最新文章

  1. python解复杂方程_Python数据处理篇之Sympy系列(五)---解方程
  2. Design Pattern - Iterator(C#)
  3. hadoop之 YARN配置参数剖析—RM与NM相关参数
  4. a标签去除下划线css_数据分析师所需的编程技能 : CSS篇
  5. mysql与mssql中datetime类型字段问题_excel数据存入sqlserver过程中,遇到Datetime的格式问题。...
  6. 虚拟机控制数据结构 (VMCS)状态转换
  7. php.ini 是否设置路由,php – 如何在路由INI文件中为Zend Framework中的子域编写路由链?...
  8. 真假难辨,AI就能分得清?
  9. html邮箱留言板代码,求HTML留言板代码或模板?
  10. java松鼠大战代码_松鼠大战2金手指版
  11. x86架构PC机系统总线概述
  12. Symbol的基本使用
  13. 三星 OMNIA7/I8700 刷机 ROM集合
  14. STM8L051的硬件I2C调试
  15. vant的安装和引入
  16. '与或非' 和 逻辑 '与或' 运算
  17. 查看mysql数据库的定时任务_mysql数据库的定时任务
  18. 自己留着用的 .net 图片水印 方法
  19. 错排问题(装错信封问题)
  20. 基于vue2+element+springboot+mybatis+jpa+mysql的学籍管理系统

热门文章

  1. CS模式与BS模式的比较分析
  2. uniApp页面钩子函数
  3. Excel用公式找出出现次数最多的数据
  4. 【hadoop期末复习】第三章 分布式文件系统HDFS 超详细讲解(更新完毕)
  5. 阿里腾讯“双向奔赴”新进展:互联互通再提速
  6. 九、项目团队激励(华为项目管理法-孙科炎读书摘要)
  7. 迈乐a100+Linux,迈乐A100单核YYF定制版固件包加刷机工具
  8. 网络营销利器 ——微博营销
  9. SOLIDWORKS 2021版新增功能: 详图模式和绘图性能
  10. seurat -- 细胞注释部分