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月前
|
IDE Java 编译器
java编程最基础学习
Java入门需掌握:环境搭建、基础语法、面向对象、数组集合与异常处理。通过实践编写简单程序,逐步深入学习,打牢编程基础。
213 1
|
2月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
286 0
|
2月前
|
负载均衡 Java API
grpc-java 架构学习指南
本指南系统解析 grpc-java 架构,涵盖分层设计、核心流程与源码结构,结合实战路径与调试技巧,助你从入门到精通,掌握高性能 RPC 开发精髓。
269 7
|
3月前
|
Java
Java基础学习day08-作业
本作业涵盖Java中Lambda表达式的应用,包括Runnable与Comparator接口的简化实现、自定义函数式接口NumberProcessor进行加减乘及最大值操作,以及通过IntProcessor处理整数数组,实现遍历、平方和奇偶判断等功能,强化函数式编程实践。
76 5
|
存储 安全 Java
24、使用 Java 官方教程学习:① 类变量和类方法详解;② 深入介绍 main() 方法
24、使用 Java 官方教程学习:① 类变量和类方法详解;② 深入介绍 main() 方法
189 1
【JAVA学习之路 | 进阶篇】Map接口及其实现类及常用方法
【JAVA学习之路 | 进阶篇】Map接口及其实现类及常用方法
|
Java 测试技术 C++
【JAVA学习之路 | 进阶篇】File类及常用方法
【JAVA学习之路 | 进阶篇】File类及常用方法
【JAVA学习之路 | 进阶篇】方法引用与构造器引用
【JAVA学习之路 | 进阶篇】方法引用与构造器引用
【JAVA学习之路 | 进阶篇】Set及其实现类与常用方法
【JAVA学习之路 | 进阶篇】Set及其实现类与常用方法
【JAVA学习之路 | 进阶篇】List接口常用方法
【JAVA学习之路 | 进阶篇】List接口常用方法