多态

Java的四大特性,抽象,继承,封装,多态。

我对多态的理解

产生多态的三个条件

1)必须要有继承

2)子类必须重写父类的方法

3)父类的引用(实例)指向子类对象

多态又叫动态绑定,绑定在方法上(所以这里就需要重写那个产生多态的方法了)

 1 //多态最终版
 2 public class TestPoly {
 3     public static void main(String[] args) {
 4         Person.grown();
 5         Tiger tiger = new Tiger("老虎", 3,"yellow");
 6         System.out.println(tiger.getName()+tiger.getAge()+tiger.getColor());
 7         tiger.eat();  //当我们重写了父类的方法,就会表现出自己的特征
 8         //1.Tiger是继承Animal
 9         //2.Tiger类中重写了Animal中的eat()方法
10         //3.父类的引用(实例),指向了子类对象
11         Animal tiger1 = new Tiger("测试多态的老虎", 100, "red");
12         System.out.println(tiger1.getName()+tiger1.getAge());
13         //在这里就会报错,因为只有方法有多态性(方法是动态绑定),变量是静态绑定的
14         //System.out.println(tiger1.getColor());
15         tiger1.eat();
16     }
17 }
18 class Animal{
19     private String name;
20     private int age;
21     public Animal(String name,int age) {
22         this.name = name;
23         this.age = age;
24     }
25     public void eat() {
26         System.out.println("我是动物吃东西的方法");
27     }
28     public String getName() {
29         return name;
30     }
31     public void setName(String name) {
32         this.name = name;
33     }
34     public int getAge() {
35         return age;
36     }
37     public void setAge(int age) {
38         this.age = age;
39     }
40 }
41 class Tiger extends Animal{
42     
43     private String color;
44     public Tiger(String name, int age) {
45         super(name, age);
46     }
47     public Tiger(String name, int age,String color) {
48         super(name, age);
49         this.color = color;
50     }
51     //本来我们可以继承到eat()方法,但是我们还是想要重新,完成子类独有的特征
52     public void eat() {
53         System.out.println("我是老虎类的吃东西方法");
54     }
55     public String getColor() {
56         return color;
57     }
58     public void setColor(String color) {
59         this.color = color;
60     }
61 }

 

posted on 2018-08-27 21:55  kidxbct  阅读(120)  评论(0)    收藏  举报

导航