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


相关文章
|
12天前
|
Java
Java中的继承和多态是什么?请举例说明。
Java中,继承让子类继承父类属性和方法,如`class Child extends Parent`,子类可重写父类方法。多态允许父类引用指向子类对象,如`Animal a = new Dog()`,调用`a.makeSound()`会根据实际对象类型动态绑定相应实现,增强了代码灵活性和可扩展性。
10 0
|
19天前
|
搜索推荐 Java
Java的面向对象特性主要包括封装、继承和多态
【4月更文挑战第5天】Java的面向对象特性主要包括封装、继承和多态
15 3
|
1月前
|
Java
【Java】一个简单的接口例子(帮助理解接口+多态)
【Java】一个简单的接口例子(帮助理解接口+多态)
17 0
|
1月前
|
Java
java多态详解
java多态详解
26 0
|
1月前
|
Java 程序员 编译器
Java继承与多态知识点详解
本文主要讲解的是Java中继承与多态的知识点
|
1月前
|
安全 Java 编译器
Java多态详解(2)
Java多态详解(2)
|
1月前
|
Java 编译器
Java多态详解(1)
Java多态详解(1)
C4.
|
1月前
|
Java
Java多态
Java多态
C4.
11 0
|
1月前
|
安全 Java 数据库连接
【Java每日一题】——第四十三题:编程用多态实现打印机.。分为黑白打印机和彩色打印机,不同类型的打印机打印效果不同。
【Java每日一题】——第四十三题:编程用多态实现打印机.。分为黑白打印机和彩色打印机,不同类型的打印机打印效果不同。
23 0
|
3月前
|
Java 编译器
重温经典《Thinking in java》第四版之第八章 多态(四十三)
重温经典《Thinking in java》第四版之第八章 多态(四十三)
28 1