Java——多态

简介: Java——多态

1. 多态

1.1 多态概述

同一个对象,在不同时刻表现出的不同形态

例:猫

可以说猫是猫:猫 cat = new 猫()

可以说猫是动物:动物 animal = new 猫 ()

(猫在不同时刻表现出来了不同的动态,既多态)

多态的前提和体现:

(1)有继承/实现关系

(2)有方法重写

(3)有父类引用指向子类对象

packageduotai;
publicclassanimal {
publicvoideat(){
System.out.println("动物吃东西");
    }
}


packageduotai;
publicclasscatextendsanimal{
@Overridepublicvoideat() {
System.out.println("猫吃鱼");
    }
}


packageduotai;
publicclassDemo {
publicstaticvoidmain(String[] args) {
animala=newcat();
    }
}


1.2 多态中成员访问特点

成员变量:编译看左边,执行看左边;

成员方法:编译看左边,执行看右边;

成员变量和成员方法的访问不一样:(成员方法有重写,成员变量没有)

packageduotai;
publicclassanimal {
publicintage=4;
publicvoideat(){
System.out.println("动物吃东西");
    }
}


packageduotai;
publicclasscatextendsanimal{
publicintage=5;
publicintweight=6;
@Overridepublicvoideat() {
System.out.println("猫吃鱼");
    }
publicvoidweight(){
System.out.println("gggg");
    }
}


packageduotai;
publicclassDemo {
publicstaticvoidmain(String[] args) {
animala=newcat();
System.out.println(a.age);
//System.out.println(a.weirht);a.eat();
//a.weight();    }
}


4猫吃鱼


1.3 多态的好处和弊端(*)

好处:提高了程序的扩展性。

具体体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型进行操作。

弊端:不能使用子类的特有功能。

1.4 多态中的转型

(1)向上转型:从子到父,父类引用指向子类对象;

(2)向下转型:从父到子,父类引用转为子类对象。

packageduotai;
publicclassanimal {
publicintage=4;
publicvoideat(){
System.out.println("动物吃东西");
    }
}


packageduotai;
publicclasscatextendsanimal{
publicintage=5;
publicintweight=6;
@Overridepublicvoideat() {
System.out.println("猫吃鱼");
    }
publicvoidweight(){
System.out.println("gggg");
    }
}


packageduotai;
publicclassDemo {
publicstaticvoidmain(String[] args) {
animala=newcat();//父类引用指向子类对象(向上转型)a.eat();
//a.weight();//创建cat类的对象catc=newcat();
c.eat();
c.weight();
//向下转型:catc1= (cat)a;//强转c1.eat();
c1.weight();
    }
}
猫吃鱼猫吃鱼gggg猫吃鱼gggg


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