多态方法重写

多态:指的是一种事物,在不同时刻所表现出来的不同状态
猫是类型,猫也是一种动物
多态的前提:1.要有继承关系
2.要有方法重写,当然不重写也可以,但是没有太大意义
3. 多态 就是 父类引用指向子类对象

public class MyTest {
public static void main(String[] args) {
   
    //Dog dog = new Dog(); //狗是狗类型的一种
    //dog.eat();
    Animal an = new Dog(); //父类引用指向子类对象

    an.eat(); //采用多态的方式,调用方法时,以子类重写过后的方法为准


}

}

 class Animal {
public void eat() {
    System.out.println("吃饭");
}
}

class Dog extends Animal {

@Override
public void eat() {
    System.out.println("狗爱吃骨头");
}
}

Zi zi = new Zi();
System.out.println(zi.num);

多态的形式访问成员变量的特点
编译看左边,运行也看左边
Fu fu=new Zi();//父类引用,指向子类对象
System.out.println(fu.num);

多态的形式访问成员方法的特点,编译看左边,运行看右边

public class MyTest3 {
public static void main(String[] args) {


    Fu fu=new Zi();//父类引用,指向子类对象
    System.out.println(fu.num);

    fu.test();
    fu.test2();

}
}

class Fu{
int num=100;
public void test(){
    System.out.println("父类的test方法");
}

public static void test2() {
    System.out.println("父类的test静态方法");
}

}

class Zi extends Fu {
int num=200;

public void show(){
    System.out.println(num);
}

public void test() {
    System.out.println("子类的test方法");
}

public static void test2() {
    System.out.println("子类的test静态方法");
}


}

方法重写:当子类中出现了和父类一模一样的方法时(方法名,参数列表,返回值类型都一样),那么这个时候就会发生方法重写,我们在调用方法时,就会以子类重写过后的方法为准

为什么要有方法重写,子类有的时候对父类的方法实现并不满意,他并不想要原封不动的继承下来,而是想要自己实现功能逻辑,或者说,他想要在父类的方法基础之上扩展一些自己的功能,那么这个时候他可以使用方法重写。

public class MyTest {
public static void main(String[] args) {



    Zi zi = new Zi();
    zi.show();
    zi.test();
}
}


class Fu {
public void show() {
    System.out.println("我是父类的show方法");
}


}

class Zi extends Fu {
public void test() {
    System.out.println("我是子类的test方法");
}

public void show(){
    System.out.println("我是子类的show");
}


}

版权声明:本文为XXY411636013原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。