搜索 贵州省住房和城乡建设厅网站,wordpress防恶意注册,连云港市网站优化,动画制作过程目录 第一题
第二题 第三题 第一题 思路分析#xff1a; 1.Person p new Student();这就是一个向上转型#xff0c;让父类的引用指向子类的对象#xff0c;但是向上转型不能访问子类的属性和方法 我们在写代码时看的是编译类型 在运行是看的是运行类型 p.run(); p.eat(); …目录 第一题
第二题 第三题 第一题 思路分析 1.Person p new Student();这就是一个向上转型让父类的引用指向子类的对象但是向上转型不能访问子类的属性和方法 我们在写代码时看的是编译类型 在运行是看的是运行类型 p.run(); p.eat(); 所有只能访问父类的两个方法 2.向下转型只能强转父类的引用不能强转父类的对象 如果写成Student s (Student) Person就会报错 应该写成Student s (Student) p 向下转型语法 子类类型 引用名 子类类型父类引用; 注意是父类的引用 向下转型后可以访问子类的属性和方法 Student s (Student) p;//向下转型 因为父类有和子类相同的方法所以只能调用其中之一 具体调用那个根据情况而定 属性没有重写之说属性的值看编译类型 方法看运行类型 package idea.homework.homework11;public class homework11 {public static void main(String[] args) {//person person new Person();Person p new Student();//向上转型 让父类的引用指向子类的对象 不能访问子类的属性和方法//在写代码时看的是编译类型 在运行是看的是运行类型p.run();p.eat();//2)只能强转父类的引用不能强转父类的对象 如果写成Student s (Student) Person就会报错//应该写成Student s (Student) p//向下转型语法 子类类型 引用名 子类类型父类引用; 注意是父类的引用//向下转型后可以访问子类的属性和方法//Student s (Student) p;//向下转型//因为父类有和子类相同的方法所以只能调用其中之一 具体调用那个根据情况而定//属性没有重写之说属性的值看编译类型 方法看运行类型s.run();s.eat();s.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..);}
}第二题 思路分析 说出和equals的区别 是比较运算符 左右两边是基本数据类型时判断的是两个值是否相同 左右两边是引用类型时默认判断的时地址是否相同 equals方法 在没有重写equals方法时 默认调用object的equals方法判断的时地址是否相同 重写了equals方法后判断的是两个对象的内容是否相同 equals不能用于基本数据类型 Java所有的类都可以使用equals package idea.homework.homework12;public class homework12 {public static void main(String[] args) {//12.说出和equals的区别/*是比较运算符左右两边是基本数据类型时判断的是两个值是否相同左右两边是引用类型时默认判断的时地址是否相同equals方法在没有重写equals方法时 默认调用object的equals方法判断的时地址是否相同重写了equals方法后判断的是两个对象的内容是否相同equals不能用于基本数据类型Java所有的类都可以使用equals*/}
}第三题 思路分析 1.我们要发现一开始我们在定义学生类和老师类的时候这两个类中我们都有name age 等属性所有我们把该属性抽出来做成一个Person类这个我们子类子需要继承父类就可以了 2.创建一个Person数组因为Students和Teacher都继承了Person了所有可以存放到Person数组中使用冒泡排序按照年龄进行排序注意在比较的时候比较的是年龄但是在交换的时候交换的可不是年龄因此在定义辅助变量的时候需要定义一个Person类型的 homework13类
package idea.homework.homework13;public class homework13 {public static void main(String[] args) {/*
(1)做一个Student类Student类有名称(name)性别(sex)年龄
(age)学号(stu_id)做合理封装通过构造器在创建对象时将4个属性赋值。
2写一个Teacher类Teacher类有名称name性别sex年年龄30 龄age)工龄work_age)做合理封装通过构造器在创建对象时将性别男 4个属性赋值。
3抽取一个父类Person类将共同属性和方法放到Person类
4学生需要有学习的方法study在方法里写生“我承诺我会好王飞爱玩象棋 好学习。 。
(5)教师需要有教学的方法(teach)在方法里写上“我承诺我会认真教学6学生和教师都有玩的方法play学生玩的是足球老师玩的是象棋此方法是返回字符串的分别返回“xx爱玩足球”和“xx爱玩象棋”其中xx分别代表学生和老师的姓名。因为玩的方法名称都一样所以 要求此方法定义在父类中子类实现重写。7定义多态数组里面保存2个学生和2个教师要求按年龄从高到低排序
(8)定义方法形参为Person类型功能调用学生的study或教师的teach方法*///创建了一个Person数组也就是多态数组该数组可以存放Student 和 Teacher Person[] p new Person[4];//为数组进行初始化p[0] new Student(jack, 男, 2);p[1] new Student(tom, 男, 1);p[2] new Teacher(many, 男, 3);p[3] new Teacher(smith, 男, 4);//使用冒泡排序按照年龄进行排序注意在比较的时候比较的是年龄但是在交换的时候交换的可不是年龄因此在定义辅助变量的时候需要定义一个Person类型的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) {//在输出p[i]的时候等价于p[i].toString()System.out.println(p[i]);}System.out.println();//遍历数组for (int i 0; i p.length; i) {//对数组中的元素进行比较如果运行类型是Student那么就调用student中的方法if (p[i] instanceof Student){((Student) p[i]).study();//对数组中的元素进行比较如果运行类型是teacher那么就调用teacher中的方法}else if (p[i] instanceof Teacher){((Teacher)p[i]).teach();}else {System.out.println(不做处理);}}}}Person类
package idea.homework.homework13;/*** Person类——父类*/
public class Person {//因为两个子类中都有name age 等属性那么我们把共同的部分给提取出来做成一个父类private String name;private char sex;private int age;public Person(String name, char sex, int age) {this.name name;this.sex sex;this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}public char getSex() {return sex;}public void setSex(char sex) {this.sex sex;}public int getAge() {return age;}public void setAge(int age) {this.age age;}// 6学生和教师都有玩的方法play学生玩的是足球老师玩的是象棋此方法是返回字符串的分别返回“xx爱玩足球”和“xx爱玩象棋”
// 其中xx分别代表学生和老师的姓名。因为玩的方法名称都一样所以 要求此方法定义在父类中子类实现重写。//这是父类特有的方法public String play() {return this.name 爱玩;}//重新写toString方法是为了方便对象的输出Overridepublic String toString() {return Person{ name name \ , sex sex , age age };}
}Student类
package idea.homework.homework13;public class Student extends Person{
// (1)做一个Student类Student类有名称(name)性别(sex)年龄
// (age)学号(stu_id)做合理封装通过构造器在创建对象时将4个属性赋值。private String stu_id;public Student(String name, char sex, int age) {super(name, sex, age);}public String getStu_id() {return stu_id;}public void setStu_id(String stu_id) {this.stu_id stu_id;}//4学生需要有学习的方法study在方法里写生“我承诺我会好王飞爱玩象棋 好学习。 。public void study(){System.out.println(super.getName()我会好好学习);}Overridepublic String play() {return 象棋;}
}Teacher类
package idea.homework.homework13;public class Teacher extends Person {//2写一个Teacher类Teacher类有名称name性别sex年年龄30 龄age)工龄work_age)做合理封装通过构造器在创建对象时将性别男 4个属性赋值。private int work_age;public Teacher(String name, char sex, int age) {super(name, sex, age);}public int getWork_age() {return work_age;}public void setWork_age(int work_age) {this.work_age work_age;}//(5)教师需要有教学的方法(teach)在方法里写上“我承诺我会认真教学public void teach() {System.out.println(super.getName() 我承若我会认真教学);}Overridepublic String play() {return 足球;}
}