首页 > 编程语言 >Java 多态、抽象

Java 多态、抽象

时间:2024-08-08 19:38:50浏览次数:5  
标签:Java 子类 void 多态 抽象 父类 方法 public

多态的概念和实现

多态:一个事物在不同状态下的多种状态

举例:

  • 学生是人,教师是人,医生是人。 (人在不同职业下的不同状态)
  • 汽态的水,液态的水,固态的水。 (水在不同状态下的不同状态)

实现多态的前提:

1、必须要有继承关系
2、需要有方法的重写 (不是必须要重写,但是重写可以体现子类的专属特征,因为子类可能会有自己的成员对象)
3、要有父类的引用指向子类对象

注意事项:

  • 1、必须是继承关系的类,才可以写成父类的引用指向子类对象
    eg. GuTaiWater extends Water 固态水 继承于 水
 Water w1 = new GuTaiWater()  正确
 Demo1 w2 = new GuTaiWater()  错误
  • 2、左边的父类可以不必是子类对象的直接父类,也可以是父类的父类
    eg. Water extends Power
GuTaiWater extends Water
Power1 p1 = new GuTaiWater()   正确

多态下,访问成员的特点

1、成员变量

  • 编译的时候,看左边的父类是否有该变量的存在,若存在,编译不报错,运行的结果也是取父类中该变量的值 (编译看左,运行看左)

2、成员方法

  • 编译的时候,看左边的父类是否有该方法的存在,若存在,编译不报错,运行的结果取决于子类中该方法的实现 (编译看左,运行看右)

3、静态的成员变量

  • 编译的时候,看左边的父类是否有该变量的存在,若存在,编译不报错,运行的结果取决于父类中该变量的值 (编译看左,运行看左)

多态的好处

1、提供了程序的维护性(由继承保证)
2、提高了程序的扩展性(由多态保证)

  • 举例: 编写一个animal类,成员变量有姓名、年龄 ,成员方法有吃、睡,定义一个工具类对每个动物调用吃和睡功能
class Animal{
    String name;
    int age;

    public Animal(){
        //无参构造方法,可以让下面的子类不需要定义构造方法
    }
    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void eat(){
        System.out.println("我饿了,我吃饭");
    }

    public void sleep(){
        System.out.println("我困了,我睡觉");
    }
}

class dog extends Animal{
    @Override
    public void eat() {
        System.out.println("

标签:Java,子类,void,多态,抽象,父类,方法,public
From: https://www.cnblogs.com/lucky-lack0-0/p/18343311

相关文章

  • Java设计模式—责任链模式(Chin of Responsibility)
    目录引言1.职责链设计模式简介1.1定义1.2解决的问题2.设计模式的结构2.1类图2.2示例代码3.优点4.缺点5.实际应用5.1SpringAOP5.2JavaServletFilter5.3ReactorPattern5.4Java中的日志记录库6.结论注意事项引言在软件开发中,设计模式是一......
  • 电话号码转换 - 华为机试真题题解(Java)
    考试平台:时习知分值:200分(第二题)考试时间:两小时(共2题)题目描述将电话号码转换,需要实现如下的中英文电话号码转换:输入的字符串中每个数字对应为中文数字中的英文单词,如Double表示两个数字相同。将输入的中文数字字符串转换为英文单词的电话号码。若输入不合法,则输出......
  • 图片表格内容识别转换-II - 华为机试真题题解(Java)
    考试平台:时习知分值:200分考试时间:两小时(共2题)题目描述华为云推出了“通用表格识别”服务,可以将图片表格转换成文本数据。请你将文本数据进一步转换为“文本型表格”,如下图所示:输入现给出一个图片表格的文本数据:每行数据形如line3col1A,表示第3行第1列的单......
  • 【轻松拿捏】Java是如何实现跨平台性的?
    Java是如何实现跨平台性的?一、Java的跨平台性主要通过以下几个核心机制实现:二、具体实现三、示例 四、JVM工作示意图五、总结......
  • Java毕业设计 基于Springboot+Vue的电影院剧院订票选座管理系统(源码+lw+部署文档+讲
    文末获取资源,收藏关注不迷路文章目录项目介绍功能需求技术介绍项目界面关键代码目录项目介绍随着经济的发展和信息技术的普及,国内许多企业都面临了重大的挑战。企业的管理流程、战略规划如果不能进行调整,极有可能面临淘汰的风险。特别是郑州大剧院,面对大量的会员和......
  • Java学习进程6
    大家好!这是我学习Java的第六周,今天我想和大家分享一下这一周我所做的事情、下周的计划、遇到的问题以及如何解决这些问题。本周学习内容在这一周,我继续深入学习Java语言的核心概念,特别是对面向对象编程(OOP)的理解。我复习了类和对象的定义,同时也对封装、继承和多态这三个重要概念......
  • 【Java基础】向下转型
    向下转型(Downcasting)在面向对象编程中是一种常见的类型转换操作,尤其在继承和多态的上下文中。为了用大白话解释这个概念,我们可以把它比作现实生活中的角色扮演。想象一下,你正在参加一场角色扮演游戏,游戏中有各种各样的角色,比如“玩家”、“战士”、“法师”和“盗贼”。在游戏......
  • 递归解决汉诺塔问题-个人见解(java)
    这里不提供题目汉诺塔问题是很多新手遇到的第一个难题,也许并不难,但是对于本人这种麻瓜来说第一次还是很难理解的,其中的思考过程一度让我崩溃不过也不是不能理解的,需要比较长的时间网络中有许多讲解视频,但是都大同小异,似乎都不是讲给麻瓜的,也可能是我们麻瓜太笨了,不过终究还是能......
  • 关于java连接数据库时提示异常java.sql.SQLException: No suitable driver found for
    当我们测试一个新的数据库服务时,需要使用对方提供jdbc驱动来连接数据库,有时候简单的写个demo去连接,发现提示异常:java.sql.SQLException:Nosuitabledriverfoundforjdbc:jdbc:nuuv://10.1.8.99:8832/xxoo比如有以下程序连接数据库测试:publicstaticvoidmain(String[]a......
  • Mac OS 批量将Java编码iso-8859-1( english_us8859)转换为utf-8格式
    !/bin/bash#指定源目录SOURCE_DIR="./serialMonitor"#遍历源目录下所有.java文件functionconvert_to_utf8(){localfile="$1"encoding=`file-I${file}|awk-F='{print$2}'`echo"encoding:$encoding"if[[&qu......