Java 学习博客_9 入门——多态

简介: 以黑马程序员全套Java教程网课为主。

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

Cat c=new Cat();
Animal a=new Cat();//父类引用指向子类对象

a 在内存中是 Cat 的大小,但是编译时被视作 Animal 类型。

多态中成员的访问特点

访问成员变量时:优先看等式左侧。如 Animal 和 Cat 中都对 age 赋值了,访问 age 得到的是 Animal 中的 age。因为成员变量不会被重写

访问成员方法时:优先看等式右侧。如 Cat 中重写了 eat 方法,使用 eat 方法就是使用 Cat 中的 eat 方法。

例:Animal 父类,其中含有 eat() 成员方法;Cat Dog Pig 子类,其中都重写了 eat() 成员方法。

public class AnimalOperator(Animal a)
{
    a.eat();
}

//使用
Cat c=new Cat();
Dog d=new Dog();
Pig p=new Pig();
AnimalOperator(c);//多态
AnimalOperator(d);//多态
AnimalOperator(p);//多态

调用的都是子类中重写的方法。

多态提高了程序的拓展性。对于子类重写父类中的方法,我们只需要一个操作类就能访问(无论子类具体是哪一种)。

但是多态无法访问子类中特有的方法。

解决这一弊端的方法就是转型。

Animal a=new Cat();//向上转型,a 不能访问 Cat 类中特有的方法
Cat c=(Cat)a;//向下转型,这样 c 就可以访问 Cat 类中特有的方法了。

使用转型的时候注意不能随便向下转型。如本例中 a 在内存中是 Cat 类,不能转换成 Dog 类。ClassCastException

目录
相关文章
|
2天前
|
Java 开发工具 Windows
Java入门及环境变量
Java入门及环境变量
|
2天前
|
设计模式 存储 JavaScript
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
|
2天前
|
Java API 调度
[AIGC] 深入理解Java并发编程:从入门到进阶
[AIGC] 深入理解Java并发编程:从入门到进阶
|
2天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
|
2天前
|
前端开发 Java 测试技术
Java从入门到精通:4.1.1参与实际项目,锻炼编程与问题解决能力
Java从入门到精通:4.1.1参与实际项目,锻炼编程与问题解决能力
|
2天前
|
Java 程序员 数据库连接
Java从入门到精通:3.3.2性能优化与调优——内存管理篇
Java从入门到精通:3.3.2性能优化与调优——内存管理篇
Java从入门到精通:3.3.2性能优化与调优——内存管理篇
|
2天前
|
Dubbo Java 应用服务中间件
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
|
Java
java基础篇 之 构造器内部的多态行为
java基础篇 之 构造器内部的多态行为
54 0
Java基础 | 多态
Java中的多态讲解
78 0
Java基础篇:多态
多态就是指一个类实例的相同方法在不同情形有不同表现形式,在面向对象设计的概念中,对于父类提供的方法调用,子类可以有自己特有的行为。
176 0