0
点赞
收藏
分享

微信扫一扫

【零基础学Java】—多态(二十六)

想溜了的蜗牛 2022-04-13 阅读 89

【零基础学Java】—多态(二十六)

一、多态的概述

  • 面向对象的三大特性:封装性、继承性、多态性
  • extends继承或者implements实现,是多态性的前提
    在这里插入图片描述
    一个对象拥有多种形态,这就是对象的多态性

在这里插入图片描述

二、多态的格式与使用

代码当中体现多态性,其实就是一句话:父类引用指向子类对象

  格式:  父类名称 对象名=new 子类名称();
  
  或者:  接口名称 对象名=new 实现类名();
public class Fu {
    public void method(){
        System.out.println("父类方法");
    }

    public void methodFu(){
        System.out.println(" 父类方法特有的");
    }
}

public class Zi extends Fu {
    @Override
    public void method(){
        System.out.println("子类方法");
    }
}

public class demoMulti {
    public static void main(String[] args) {
        //使用多态的写法
        //左侧父类的引用 指向了右侧子类的对象
        Fu obj=new Zi();
        obj.method();//子类方法
        obj.methodFu();//父类方法特有的
    }
}

在这里插入图片描述

三、多态中使用成员方法的特点

public class Fuu /*extends Object*/ {
    int num=10;

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

public class Zii extends  Fuu{
    int num=20;

    int age=20;

    @Override
    public void showNum(){
        System.out.println(num);
    }
}

/**
 * @author :CaiCai
 * @date : 2022/4/10 17:03
 */

/*

访问成员变量的方式:
直接通过对象名访问成员变量,看等号的左边是谁,没有则向上找
间接通过成员方法访问成员变量,看该方法属于谁,优先使用谁,没有就向上找
 */
public class demoMultiFiled {
    public static void main(String[] args) {
        // 使用多态的写法:  左父右子
        Fuu obj=new Zii();
        System.out.println(obj.num);//10
        //System.out.println(obj.age);//错误写法

       // obj.showNum();//10 子类没有覆盖重写就是父::10
        obj.showNum();//20 子类如果覆盖重写就是子:20
    }
}

在多态的代码当中,成员方法的访问规则是:看new的是谁,就优先使用谁,没有则向上找

口诀:
成员变量:编译看左边,运行还看左边
成员方法:编译看左,运行看右

 */
public class Fuu /*extends Object*/ {
    int num=10;

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

    public void method(){
        System.out.println("父类方法");
    }
    public void methodFu(){
        System.out.println("父类特有方法 ");
    }
}

public class Zii extends  Fuu{
    int num=20;

    int age=20;

    @Override
    public void showNum(){
        System.out.println(num);
    }

    @Override
    public void method(){
        System.out.println("子类方法");
    }

    public void methodZii(){
        System.out.println("子类特有方法");
    }
}


/*
口诀:
成员变量:编译看左边,运行还看左边
成员方法:编译看左,运行看右

 */
public class demo02MultiFiled {
    public static void main(String[] args) {
        Fuu obj=new Zii();
        obj.method();//子类方法(父子都有,优先使用子)
        obj.methodFu();//父类特有方法(子类没有,父类有,向上找到父类)
    }


}

在这里插入图片描述

四、使用多态的好处

在这里插入图片描述
在这里插入图片描述

举报

相关推荐

0 条评论