第八章作业

案列01;

1.定义一个Person类{name,age,job},初始化Person对象数组,有3个person对象;
* 并按照age从大到小进行排序,提示,使用冒泡排序Homework01.java
 1 package com.homeWork;
 2 
 3 /**
 4  * 1.定义一个Person类{name,age,job},初始化Person对象数组,有3个person对象;
 5  * 并按照age从大到小进行排序,提示,使用冒泡排序Homework01.java
 6  */
 7 public class homework01 {
 8     public static void main(String[] args) {
 9         //定义一个对象数组,里面有三个person对象
10         Person[] people = new Person[3];
11         people[0] = new Person("smith", 36, "java开发工程师");
12         people[1] = new Person("tom", 20, "PHP开发工程师");
13         people[2] = new Person("june", 56, "算法工程师");
14         //输出当前的对象数组
15 
16         for (int i = 0; i < people.length; i++) {
17             System.out.println(people[i]);
18         }
19 
20         Person temp = null;
21         for (int i = 0; i < people.length - 1; i++) {
22             for (int j = 0; j < people.length - 1 - i; j++) {
23 
24                 //使用冒泡排序,名字长度从大到小进行排序,也就是前面的名字长度<后面的名字长度,就交换
25                 //if (people[j].getName().length() < people[j + 1].getName().length())
26                 //使用冒泡排序,age从大到小进行排序,也就是前面的年龄<后面的年龄,就交换
27                if (people[j].getAge() < people[j + 1].getAge()) {
28                     temp = people[j];
29                     people[j] = people[j + 1];
30                     people[j + 1] = temp;
31                 }
32             }
33         }
34         System.out.println("排序后的效果如下:");
35         for (int i = 0; i < people.length; i++) {
36             System.out.println(people[i]);
37         }
38 
39 
40     }
41 }
42 
43 
44 class Person {
45     private String name;
46     private int age;
47     private String job;
48 
49     public Person(String name, int age, String job) {
50         this.name = name;
51         this.age = age;
52         this.job = job;
53     }
54 
55     public String getName() {
56         return name;
57     }
58 
59     public void setName(String name) {
60         this.name = name;
61     }
62 
63     public int getAge() {
64         return age;
65     }
66 
67     public void setAge(int age) {
68         this.age = age;
69     }
70 
71     public String getJob() {
72         return job;
73     }
74 
75     public void setJob(String job) {
76         this.job = job;
77     }
78 
79     @Override
80     public String toString() {
81         return "Person{" +
82                 "name='" + name + '\'' +
83                 ", age=" + age +
84                 ", job='" + job + '\'' +
85                 '}';
86     }
87 }

 

 案列5.设计父类一员工类。子类:工人类(Worker),农民类(Peasant),教师类(Teacher),科学家类(Scientist),服务生类(Waiter)。
(1)其中工人,农民,服务生只有基本工资sal
(2)教师除基本工资外,还有课酬(元/天)classDay,classSal
(3)科学家除基本工资外,还有年终奖bonus
(4)编写一个测试类,将各种类型的员工的全年工资打印出来

测试:

 1 package com.homeWork.homeWork05;
 2 
 3 public class homework05 {
 4     public static void main(String[] args) {
 5         //工人
 6         worker worker = new worker("tom", 6900, 15);
 7         System.out.println("工人年工资如下:");
 8         worker.printSalary();
 9         System.out.println("===================================");
10         //老师
11         Teacher smith = new Teacher("smith", 7600, 14);
12         //对日工资和工作天数进行动态设置
13         smith.setDays(26);
14         smith.setClassSalary(360);
15         System.out.println("老师年工资如下");
16         smith.printSalary();
17         System.out.println("==================================");
18         //科学家
19         Scientist jack = new Scientist("jack", 45000, 16, 330000);
20         System.out.println("科学家年工资如下:");
21         jack.printSalary();
22 
23     }
24 }

父类:

 1 package com.homeWork.homeWork05;
 2 
 3 /**
 4  * 案列5.设计父类一员工类。子类:工人类(Worker),农民类(Peasant),教师类(Teacher),科学家类(Scientist),服务生类(Waiter)。
 5  * (1)其中工人,农民,服务生只有基本工资sal
 6  * (2)教师除基本工资外,还有课酬(元/天)classDay,classSal
 7  * (3)科学家除基本工资外,还有年终奖bonus
 8  * (4)编写一个测试类,将各种类型的员工的全年工资打印出来
 9  */
10 public class Employ {
11 
12     //定义属性类型
13     private String name;
14     private double sal;
15     private int month;
16 
17     //方法(构造器、getter、setter)
18     //构造器
19 
20     public Employ(String name, double sal, int month) {
21         this.name = name;
22         this.sal = sal;
23         this.month = month;
24     }
25 
26     public String getName() {
27         return name;
28     }
29 
30     public void setName(String name) {
31         this.name = name;
32     }
33 
34     public double getSal() {
35         return sal;
36     }
37 
38     public void setSal(double sal) {
39         this.sal = sal;
40     }
41 
42     public int getMonth() {
43         return month;
44     }
45 
46     public void setMonth(int month) {
47         this.month = month;
48     }
49     //方法
50     public void printSalary(){
51         System.out.println("年工资="+sal*month);
52     }
53 }

子类:

 1 package com.homeWork.homeWork05;
 2 
 3 public class Teacher extends Employ {
 4     //特有属性
 5     private double classSalary;//课时费
 6     private int days;//上课天数
 7     //方法
 8 
 9     public Teacher(String name, double sal, int month) {
10         //这里的日工资、工作天数不做统一设置,可以通过set进行动态设置
11         super(name, sal, month);
12     }
13 
14     public double getClassSalary() {
15         return classSalary;
16     }
17 
18     public void setClassSalary(double classSalary) {
19         this.classSalary = classSalary;
20     }
21 
22     public int getDays() {
23         return days;
24     }
25 
26     public void setDays(int days) {
27         this.days = days;
28     }
29 
30     @Override
31     public void printSalary() {
32         System.out.println("年工资="+(getSal()*getMonth()+classSalary*days));
33     }
34 }

 

 

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


案列3.编写老师类 Homework03.java
(1)要求有属性“姓名name",“年龄age”,“职称post”,"基本工资salary”
(2)编写业务方法,introduce(),实现输出一个教师的信息。
(3)编写教师类的三个子类:教授类(Professor)、副教授类、讲师类。工资级别分别为:教授为1.3、副教授为1.2、讲师类1.1。
在三个子类里面都重写父类的introduce()方法。
(4)定义并初始化一个老师对象,调用业务方法,实现对象基本信息的后台打印.
 1 package com.homeWork;
 2 
 3 public class homework03 {
 4     public static void main(String[] args) {
 5         Teacher teacher = new Teacher("tom",36,"教师",6500);
 6         System.out.println(teacher.introduce());
 7     }
 8 }
 9 /*
10 3.编写老师类 Homework03.java
11 (1)要求有属性“姓名name",“年龄age”,“职称post”,"基本工资salary”
12 (2)编写业务方法,introduce(),实现输出一个教师的信息。
13 (3)编写教师类的三个子类:教授类(Professor)、副教授类、讲师类。工资级别分别为:教授为1.3、副教授为1.2、讲师类1.1。
14 在三个子类里面都重写父类的introduce()方法。
15 (4)定义并初始化一个老师对象,调用业务方法,实现对象基本信息的后台打印.
16 
17  */
18 //创建教师类
19 class Teacher{
20     private  String name;
21     private int age;
22     private String post;
23     private double salary;
24     //创建构造器
25     public Teacher(String name, int age, String post, double salary) {
26         this.name = name;
27         this.age = age;
28         this.post = post;
29         this.salary = salary;
30     }
31 
32     public String getName() {
33         return name;
34     }
35     public void setName(String name) {
36         this.name = name;
37     }
38 
39     public int getAge() {
40         return age;
41     }
42     public void setAge(int age) {
43         this.age = age;
44     }
45 
46     public String getPost() {
47         return post;
48     }
49     public void setPost(String post) {
50         this.post = post;
51     }
52 
53     public double getSalary() {
54         return salary;
55     }
56     public void setSalary(double salary) {
57         this.salary = salary;
58     }
59    // 2)编写业务方法,introduce(),实现输出一个教师的信息。
60     public String introduce(){
61         return "姓名="+name+"\n"+"年龄="+age+"\n"+"职称="+post+"\n"+"月工资="+salary;
62     }
63 }
64 
65 //(3)编写教师类的三个子类:教授类(Professor)、副教授类、讲师类。
66 // 工资级别分别为:教授为1.3、副教授为1.2、讲师类1.1。
67 //在三个子类里面都重写父类的introduce()方法。
68 
69 class Professor extends Teacher{
70     private String salaryLevel;
71 
72     public Professor(String name, int age, String post, double salary, String salaryLevel) {
73         super(name, age, post, salary);
74         this.salaryLevel = salaryLevel;
75     }
76 
77     public String getSalaryLevel() {
78         return salaryLevel;
79     }
80     public void setSalaryLevel(String salaryLevel) {
81         this.salaryLevel = salaryLevel;
82     }
83 
84 //    public double Level(){
85 ////        if ("教授".equals(getPost())){
86 ////        return 1.3*getSalary();
87 ////        }else if ("副教授".equals(getPost())){
88 ////            return 1.2*getSalary();
89 ////        }else if ("讲师".equals(getPost())){
90 ////            return 1.1*getSalary();
91 ////        }else{}
92 //    }
93     @Override
94     public String introduce() {
95         return super.introduce();
96     }
97 }

 案列06;

 1 package com.homeWork.homeWork05;
 2 
 3 /**
 4  * 6.假定Grand、Father和Son在同一
 5  * 个包,问:父类和子类中通过this和
 6  * super都可以调用哪些属性和方法
 7  */
 8 
 9 public class homework06 {
10     public static void main(String[] args) {
11 
12     }
13 }
14 class Grand{//超类
15     String name="AA";
16     private int age=100;
17     public void g10(){
18 
19     }
20 }
21 
22 class Father extends Grand {//父类
23     String id = "001";
24     private double score;
25     public void f1(){};
26 
27 }
28 //super可以访问哪些成员(属性和方法)?
29 //super 是用来访问父类的,但是不可以访问父类私有属性
30 // 公共的都可以访问(super.name、super.g10()、)
31 //this可以访问哪些成员?
32 //this是查找本类的属性,所有都可以访问
33 
34 
35     class Son extends Father{//子类
36             String name="BB";
37             public void g1(){}
38             private void show(){
39             }
40         }
41 //super可以访问哪些成员(属性和方法)?
42                 //super.id;super.f1(0;super.name;super.g1
43 //this可以访问哪些成员?
44             //this可以访问本类中所有元素

案列07;请写出程序的最终结果

 1 package com.homeWork.homework07;
 2 //7.写出程序结果
 3 public class homework07 {
 4 }
 5 
 6 class Test {//父类
 7     String name = "Rose";
 8 
 9     Test() {
10         System.out.println("Test");
11     }
12 
13     Test(String name) {
14         this.name = name;
15     }
16 }
17 
18 class Demo extends Test{//子类
19     String name="Jack";
20     Demo() {
21         super();
22         System.out.println("Demo");
23     }
24         Demo(String s){
25                 super(s);
26     }
27         public void test() {
28             System.out.println(super.name);
29             System.out.println(this.name);
30         }
31             public static void main(String[] args) {
32                 
33                     new Demo().test();//匿名对象
34                     new Demo("john").test();//匿名
35                 }
36         //请输出最终的结果
37 
38 }

 

案列9.设计一个Point类,其x和y坐标可以通过构造器提供。提供一个子类LabeledPoint,其
构造器接受一个标签值和x,y坐标,比如:new LabeledPoint(“Black
Thursday",1929,230.07),写出对应的构造器即可Homework09.java

 

 

 

 


案列10.编写Doctor类{name,age,job,gender,sal}
相应的getter()和setter()方法,5个参数的构造器,重写父类的equals()方法:public
boolean equals(Object obj),并判断测试类中创建的两个对象是否相等。相等就是判断
属性是否相同

 1 package com.unit01;
 2 
 3 /**
 4  * 10.编写Doctor类{name,age,job,gender,sal}
 5  *   相应的getter()和setter()方法,5个参数的构造器,
 6  *   重写父类的equals()方法:public
 7  *   boolean equals(Object obj),并判断测试类中创建的两个对象是否相等。
 8  *   相等就是判断属性是否相同
 9  */
10 public class doctor {
11     //属性
12     private  String name;
13     private int age;
14     private  char gender;
15     private  double sal;
16     //构造器
17     public doctor(String name, int age, char gender, double sal) {
18         this.name = name;
19         this.age = age;
20         this.gender = gender;
21         this.sal = sal;
22     }
23 
24     public String getName() {
25         return name;
26     }
27 
28     public void setName(String name) {
29         this.name = name;
30     }
31     public int getAge() {
32         return age;
33     }
34 
35     public void setAge(int age) {
36         this.age = age;
37     }
38     public char getGender() {
39         return gender;
40     }
41 
42     public void setGender(char gender) {
43         this.gender = gender;
44     }
45 
46     public double getSal() {
47         return sal;
48     }
49     public void setSal(double sal) {
50         this.sal = sal;
51     }
52     //重写父类equals的方法
53     public boolean equals(Object obj){
54         //判断两个对象是否相同
55         if (this==obj){
56         return  true;
57         }
58         //判断obj是否是doctor类型或者子类型
59         //过关斩六将
60         if (!(obj instanceof doctor)){//不是的情况
61             return false;
62         }
63         //obj是doctor类型或者子类型:向下转型
64         doctor doctor= (doctor) obj;
65         return this.name.equals(doctor.name)&& this.age==doctor.age && this.gender==doctor.gender&& this.sal==doctor.sal;
66     }
67 }
package com.unit01;

public class homework10 {
    public static void main(String[] args) {
        doctor doctor1 = new doctor("simth", 26, '男',26500);
        doctor doctor2 = new doctor("simth", 26, '男',26500);
        System.out.println(doctor1.equals(doctor2));//true;由于已经重写了父类,所以判断的是后的属性是否相同
    }
}

 

案列11;

11.现有Person类,里面有方法run、eat,Student类继承了Person类,并重写了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.printIn("student study."); }
}

//向上转型:父类的引用指向子类的对象

Person p= new stustent();

p能调用的是它的编译类型Preson类中的run方法和eat方法

p.run()//最终的运行效果要看它 的运行类型:p的运行类型是stustent()方法:所以输出student run

p.eat()//先去子类student类中查找,没有再去父类中查找:所以输出"person eat"

//向下转型:向下转型:把指向子类对象的父类引用,转成指向子类对象的子类引用

Student s =(Student)p

s能调用的是它的编译类型Student类中的run方法和study方法和父类中的eat()

s.run() 运行结果是student run

s.study()运行结果是student study

s.eat()运行结果是person eat

 

案例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爱玩象棋”(其
中xx分别代表学生和老师的姓名)。因为玩的方法名称都一样,所以要求
此方法定义在父类中,子类实现重写。
(7)定义多态数组,里面保存2个学生和2个教师,要求按年龄从高到低排序,
(8)定义方法,形参为Person类型,功能:调用学生的study或教师的teach方法

案列13.打印效果如下
老师的信息:
姓名:张飞
年龄:30
性别:男
工龄:5
我承诺,我会认真教课。
张飞爰玩象棋
学生的信息:
姓名:小明
年龄:15
性别:男
学号:00023102
我承诺,我会好好学习。
小明爱玩足球。
Homework13.java

 1 package com.homework13;
 2 /**
 3  * (1)做一个Student类,Student类有名称(name),性别(sex),年龄
 4  * (age),学号(stu id),做合理封装,通过构造器在创建对象时将4个
 5  * 属性赋值。
 6  * (2)写一个Teacher类Teacher类有名称(name),性别(sex),年龄
 7  * (age),工龄(work_age),做合理封装,通过构造器在创建对象时将4个
 8  * 属性赋值。
 9  * (3)抽取一个父类Person类,将共同属性和方法放到Person类
10  * (4)学生需要有学习的方法(study),在方法里写生“我承诺,我会好好
11  * 学习。”。
12  * (5)教师需要有教学的方法(teach),在方法里写上“我承诺,我会认真
13  * 教学。”。
14  * (6)学生和教师都有玩的方法(play),学生玩的是足球,老师玩的是象棋,
15  * 此方法是返回字符串的,分别返回“xx爱玩足球”和“xx爱玩象棋”(其
16  * 中xx分别代表学生和老师的姓名)。因为玩的方法名称都一样,所以要求
17  * 此方法定义在父类中,子类实现重写。
18  * (7)定义多态数组,里面保存2个学生和2个教师,要求按年龄从高到低排序,
19  * (8)定义方法,形参为Person类型,功能:调用学生的study或教师的
20  */
21 //整体测试
22 public class homework13 {
23     public static void main(String[] args) {
24         //测试学生类
25         Student student = new Student("李明", '男', 25, 2016);
26         student.printInfo();//调用学生里面的打印输出方法
27 
28         System.out.println("=========================================");
29         Teacher teacher = new Teacher("张飞", '男', 24, 2);
30         teacher.printInfo();
31 
32 
33         //(7)定义多态数组,里面保存2个学生和2个教师
34         Person[ ] persons = new Person[4];
35         persons[0] = new Student("jack",'男',25,2015);
36         persons[1] = new Student("marry",'女',22,2016);
37         persons[2] = new Teacher("smith",'女',32,5);
38         persons[3] = new Teacher("linda",'男',28,5);
39 
40             //创建对象
41         homework13 homework13 = new homework13();
42         homework13.bubbleSort(persons);
43         System.out.println("=======================================");
44         //创建排序后的数组
45         System.out.println("排序后的数组情况");
46         for (int i = 0; i <persons.length ; i++) {
47             System.out.println(persons[i]);
48         }
49         //遍历数组,调用test方法()
50         System.out.println("=================================");
51         for (int i = 0; i < persons.length ; i++) {
52             homework13.test(persons[i]);
53         }
54     }
55 
56     //(8)定义方法,形参为Person类型,功能:调用学生的study或教师的teach
57     //分析:这里需要使用到向下转型和类型判断
58     public void test(Person p){
59         if (p instanceof Student){//如果p的运行类型属于学生类型
60             ((Student) p).study();//向下转型
61         }else if (p instanceof  Teacher){  //如果p的运行类型属于老师类型
62             ((Teacher) p).teach();
63         }else {
64             System.out.println("do nothing");
65         }
66     }
67 
68     //要求按年龄从高到低排序
69     public void  bubbleSort(Person[ ] persons){
70         Person temp = null;
71         for (int i = 0; i <persons.length-1 ; i++) {
72             for (int j = 0; j <persons.length-1-i ; j++) {
73                 //判断年龄从高到低排序
74                 if (persons[j].getAge()<persons[j+1].getAge()){
75                     temp = persons[j];
76                     persons[j]=persons[j+1];
77                     persons[j+1]= temp;
78                 }
79             }
80         }
81     }
82 
83 }

教师类:

package com.homework13;

/*
(2)写一个Teacher类Teacher类有名称(name),性别(sex),年龄
(age),工龄(work_age),做合理封装,通过构造器在创建对象时将4个
属性赋值。
3)抽取一个父类Person类,将共同属性和方法放到Person类
(5)教师需要有教学的方法(teach),在方法里写上“我承诺,我会认真教学。
 */
public 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;
    }

        //getter和setter方法
        public int getWork_age() {
            return work_age;
        }

        public void setWork_age(int work_age) {
            this.work_age = work_age;
        }

        //特有方法
        public void teach() {
            System.out.println(getName()+"承诺,会搞好教学");
        }
        //重写父类的play方法

        @Override
        public String play() {
            return super.play()+"踢足球";
        }
        //输出打印信息,体现封装
            public void printInfo(){
                System.out.println("信息如下:");
                System.out.println(super.basicInfo());
                System.out.println("工龄:"+work_age);
                teach();
                System.out.println(play());
            }

    @Override
    public String toString() {
        return "Teacher{" +
                "work_age=" + work_age +
                '}'+super.toString();
    }
}

学生类:

package com.homework13;

/*
案例题目描述:
(1)做一个Student类,Student类有名称(name),性别(sex),年龄
(age),学号(stu id),做合理封装,通过构造器在创建对象时将4个
属性赋值。
3)抽取一个父类Person类,将共同属性和方法放到Person类
(4)学生需要有学习的方法(study),在方法里写生“我承诺,我会好好
 * 学习。”。
 */
public class Student extends Person {  //学生类
    //属性
    private int stu_id;
    //构造器
    public Student(String name, char sex, int age, int stu_id) {
        super(name,sex,age);
        this.stu_id = stu_id;
    }
        //方法
            public int getStu_id() {
                return stu_id;
            }
            public void setStu_id(int stu_id) {
                this.stu_id = stu_id;
            }
            //学生特有的学习方法
        public void study(){
            System.out.println(getName()+"承诺,会好好学习");
        }
        //重写父类的play()方法
        @Override
        public String play() {
            return super.play()+"打篮球";
        }
        //输出一个打印信息,体现封装
        public void printInfo(){
            System.out.println("学生信息如下:");
            System.out.println(super.basicInfo());//去调用父类的基本信息
            System.out.println("学号:"+stu_id);
            study();
            System.out.println(play());
        }

    @Override
    public String toString() {
        return "Student{" +
                "stu_id=" + stu_id +
                '}'+super.toString();
    }
}

父类:

 1 package com.homework13;
 2 public class Person {//父类
 3     private String name;
 4     private char sex;
 5     private int age;
 6 
 7     public Person(String name, char sex, int age) {
 8         this.name = name;
 9         this.sex = sex;
10         this.age = age;
11     }
12 
13             public String getName() {
14                 return name;
15             }
16             public void setName(String name) {
17                 this.name = name;
18             }
19 
20             public char getSex() {
21                 return sex;
22             }
23             public void setSex(char sex) {
24                 this.sex = sex;
25             }
26 
27             public int getAge() {
28                 return age;
29             }
30             public void setAge(int age) {
31                 this.age = age;
32             }
33             //方法玩play(),把相同的内容输出
34             public  String play(){
35                 return name+"兴趣爱好是";
36             }
37             //定义一个基本信息
38             public String basicInfo(){
39                 return "姓名:"+name+"\n年龄:"+age+"\n性别:"+sex;
40             }
41 
42     @Override
43     public String toString() {
44         return "Person{" +
45                 "name='" + name + '\'' +
46                 ", sex=" + sex +
47                 ", age=" + age +
48                 '}';
49     }
50 }

 案列14:

案列分析情况:

1.C c = new C()    首先进入的是C类的无参方法。this.("hello"),而this指的是本类中的带参数的方法;所以指向super.("hahah")

2.而super.("hahah")指向的是父类的带参方法B(string name),这里面有个默认的super(),这时候的super(),指的是父类的无参方法A()

输出结果:
我是A类,
hahah我是B类的有参构造
我是c类的有参参构造
我是c类的无参构造

 

 

案列15.什么是多态,多态具体体现有哪些?(可举例说明)Homework15.java
多态:方法或对象具有多种形态,是OOP的第三大特征,是建立在封装和继承基础之上
多态具体体现
1.方法多态
(1)重载体现多态(2)重写体现多态
2.对象多态
(1)对象的编译类型和运行类型可以不一致,编译类型在定义时,就确定,不能变化
(2)对象的运行类型是可以变化的,可以通过getClasss()来查看运行类型
(3)编译类型看定时时=号的左边,运行类型看=号右边
3.举例说明

 

posted @ 2022-03-19 17:22  捞月亮的渔夫  阅读(119)  评论(0)    收藏  举报