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

简介: 【零基础学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();//父类特有方法(子类没有,父类有,向上找到父类)
    }
}

四、使用多态的好处


相关文章
|
3月前
|
算法 Java 程序员
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
66 9
|
3月前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
40 7
|
3月前
|
Java 开发者
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
48 5
|
3月前
|
Java 程序员
让我们一起探讨Java多态的奥秘,看看它是如何打破“一刀切”的局限,让我们的代码更加生动多彩
让我们一起探讨Java多态的奥秘,看看它是如何打破“一刀切”的局限,让我们的代码更加生动多彩
42 5
|
3月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
24天前
|
存储 Java 测试技术
Java零基础-多态详解
【10月更文挑战第10天】Java零基础教学篇,手把手实践教学!
19 4
|
29天前
|
Java 编译器 程序员
Java多态背后的秘密:动态绑定如何工作?
本文介绍了Java中多态的实现原理,通过动态绑定和虚拟方法表,使得父类引用可以调用子类的方法,增强了代码的灵活性和可维护性。文中通过具体示例详细解析了多态的工作机制。
34 4
|
2月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
1月前
|
Java
java继承和多态详解
java继承和多态详解
41 5
|
1月前
|
存储 Java 测试技术
Java零基础-多态详解
【10月更文挑战第1天】Java零基础教学篇,手把手实践教学!
25 1