Java继承和多态

C#笔记——方法 语法 参数、返回值判断 方法的命名规则 方法名开头大写,参数名开头小写 ... 阅读详情

 一、继承

1、什么是继承,继承的作用是什么?

在父类中只定义一些通用的属性和方法,子类可以继承父类的特征和行为,使得子类具有父类的各种属性和方法(例如儿子继承父亲财产)。子类可以重写父类的方法,也可以自己重新定义特有的行为和属性。

继承的作用:提高了代码的复用性,避免重复代码的出现。

继承的基本语法:

class 子类 extends 父类{

} //父类的构造方法不可以被继承

特点:

①在继承关系中,父类和子类需要满足 is a 的关系。

②父类具有子类通用的特征和行为,而子类除了具有父类的特征和行为,还允许具有一些自己特殊的特征和行为。

③单继承性:Java 允许一个类仅能继承一个其它类,即一个类只能有一个父类,这个限制被称做单继承性(一个儿子只能有一个亲爸爸,一个爸爸可以有多个儿子)。后面学到的接口(interface)则允许多继承(接口与接口之间)。

2、继承的应用场景是什么时候?

当两个类具有相同的特征(属性)和行为(方法)时,就可以使用继承的想法,抽取出两个类中相同的特征和方法,将其放入一个具有共性的父类中,然后将这两个类去继承这个父类。

3、 什么是方法重写?

在子类中定义的一个方法,其方法名、返回类型及参数列表与父类中某个方法的方法名、返回类型及参数列表相同,那么子类的这个方法就是父类的方法重写。

方法重写在不同类,是实现多态的必要条件。

4、super关键字的用法

在子类的构造方法中,通过super关键字调用父类的构造方法。

如果子类中重写了父类的方法,能够通过 super.方法名 调用父类的方法。

父类:

public class Fu {
    private String name;
    private int age;

    public Fu(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public void method(){
        System.out.println("我是父类方法");
        System.out.println(this.name + "..." + this.age);
    }
}

子类:

public class Zi extends Fu{

    public Zi(String name, int age) {
        super(name, age);
    }
    public void play(){
        System.out.println("我是子类方法");
        super.method();
    }
}

测试类:

public class Test01 {
    public static void main(String[] args) {
        Zi a = new Zi("王大锤",18);
        System.out.println("==============");
        a.play();
        System.out.println("==============");
        a.method();
    }
}

输出结果:

 二、多态

 1、什么是多态?多态的体现是什么?

定义(体现):一个引用就可以表现多种形态。(同一个行为,具有不同的形式)

 2、多态有什么好处?

可以增强程序的可扩展性及可维护性,使代码更加简洁。

不但能减少编码的工作量,也能大大提高程序的可维护性及可扩展性。

 3、如何实现多态?多态的实现的前提有什么?

多态实现的前提:⑴ 有继承或者实现。

⑵ 要有方法重写。⑶ 父类引用指向子类对象(接口引用指向实现类对象)

 4、多态的访问特点

成员变量:编译时看左边,运行时看左边 

成员方法:编译时看左边,运行时看右边 

这也导致了多态不能访问子类的特有方法,编译不通过。

如何实现:

public class Demo1 {

    public static void main(String[] args) {
        Cat cat = new Cat();
        show(cat);

        Dog dog = new Dog();
        show(dog);

        Monkey m = new Monkey();
        show(m);
    }

    //多态的应用:方法的形参是父类,实参是子类对象
    public static void show(Animal a){
        a.eat();
    }
}
class Animal{
    public void eat(){
        System.out.println("动物觅食");
    }
}

class Cat extends Animal{
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }

    public void catchMouse(){
        System.out.println("猫抓老鼠");
    }
}

class Dog extends Animal{
    @Override
    public void eat() {
        System.out.println("狗吃肉");
    }


    public void lookHome() {
        System.out.println("狗看家");
    }
}

class Monkey extends Animal{
    @Override
    public void eat() {
        System.out.println("猴子吃香蕉");
    }
}

运行结果:

 5、多态的优缺点

优点:⑴ 实现组件化和代码解耦。

⑵ 当方法形参为父类或接口时,调用方法时就可以传入任何子类对象或者实现类对象。

缺点:多态的情况下,无法使用子类独有的功能。(规范和统一功能的调用)

 6、多态的类型转换

向上转换:自动转换,子类转成父类。(小转大,可看成基本数据类型的转换)

向下转换:强制转换,父类转成子类。

//多态下无法使用子类独有的方法,需要强转才能调用
        //强转前需要做类型判断
        if(a instanceof Cat){
            Cat c = (Cat) a;
            c.catchMouse();
            c.eat();
        }

【Java基础知识 17】Java继承和多态 关键字extends表明正在构造的新类派生于一个已存在的类。已存在的类称为超类(superclass),新类称为子类(subclass)。超类和子类是 Java 程序员最常用的两个术语。在设计类的时候,应该将通用的方法放在超类中, 而将具有特殊用途的方法放在子类中。 阅读详情

相关推荐

BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversarial Network(2018,妆容迁移)

论文下载地址:BeautyGAN | Proceedings of the 26th ACM international conference on Multimedia 目的:在实例级实现化妆图像和非化妆图像的妆容迁移 方法:全局域集损失和本地实例级损失合并到一个双输入/输出对抗生成网络。步骤:使用一对鉴别器将非化妆面传输到化妆域,鉴别器从域的真实样本中分辨出生成的图像。在域集迁移的基础上,采用基于不同人脸区域的像素级直方图损失来实现实例级迁移。为了保持人脸的一致性和消除伪影,在总体目标函数中加入了.

weixin_53965540的博客 663

java中static的用法

java中static关键字的用法和注意事项 1.static的作用范围及用法 2.static 的应用—单例模式 3.static注意事项总结

虽然但是 2万+

保姆级教程:用Qlib和LightGBM从零搭建你的第一个AI量化选股策略(附完整代码)

本文提供了一份详细的教程,教你如何使用Qlib和LightGBM从零搭建AI量化选股策略。教程涵盖了环境配置、数据获取、特征工程、模型训练和策略回测等关键步骤,并附有完整代码和常见问题解决方案,适合量化投资初学者快速上手。

weixin_29191081的博客 443

java学习(十二)——抽象类、抽象方法

抽象方法 概念:只有方法的声明,没有方法的实现。或者说是没有方法体的的特殊方法。什么时候使用抽象方法呢?         在程序设计中,有时候只需声明类的功能,而不必指出其实现细节时,就可以使用抽象方法。格式            [修饰符] abstract <方法返回类型> 方法名(参数列表);                   如: public abstract int...

叶叶 1195

AD620仪表放大器模块实战:从双电源切换到单电源供电的完整指南(附原理图)

本文深入探讨了AD620仪表放大器模块从双电源切换到单电源供电的常见陷阱与正确方案。通过解析AD620的内部架构与电气特性,指出其“天生”依赖双电源,简单的跳线改装会导致芯片损坏或失效。文章提供了基于AD623芯片的真正单电源替代方案,并附有原理图与实战波形对比,为便携式设备设计提供了完整指南。

weixin_29231027的博客 365

售货机非现金支付开发指南:MDB协议下VPOS刷卡器的那些坑

本文深入探讨了MDB协议下非现金支付设备的开发实践,重点解析了NAYAX VPOS刷卡器的集成难点与解决方案。从RS232通信参数配置到Always idle功能实现,提供了一套完整的售货机支付系统开发指南,帮助开发者规避常见陷阱,提升设备兼容性与交易稳定性。

weixin_29258297的博客 133

JAVa学习

JAVA学习笔记 第一个java程序 类 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。 类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。 构造方法 每个类都有构造方法,构造方法的名称必须与类同名,一个类可以有多个构造方法 public Puppy(){ } 创建对

weixin_51909453的博客 231

SPSS新手教程—两步聚类之结果解读

在《详解SPSS两步聚类之参数设置》一文中,我们已经了解了两步聚类的优点、分析原理,以及参数设置的技巧。 在本节中,会对IBM SPSS Statistics聚类后的结果进行解读,其中会涉及到最终聚类的结果、聚类的质量、变量重要性、聚类特征的解读。 如图1所示,我们先来回顾下本例数据在参数设置面板中的详细设置。 图1:二阶聚类设置 一、数值结果 根据上述参数设置,得到如下的数值分析结果。 首先看到自动聚类结果,如图2所示为聚类的透视表结果,展示了不同聚类数目下的BIC、BIC变化量、BIC变

nekonekoboom的博客 3万+

static关键字(静态)

当在定义类的时候,类中都会有相应的属性和方法。而属性和方法都是通过创建本类对象调用的。当在调用对象的某个方法时,如果该方法没有访问到对象的`成员变量`时,为了调用方法而去创建这个对象有些多余。可是不创建对象,方法又调用不了。 不创建对象,就可以调用方法 班级里有多个学生,每个学生名字不一样,但是班级是一样的,每次创建一个对象都要给班级开辟空间,有点浪费内存空间, 让这几个对象共用这个班级 package com.jf.lxh.demo1.demo05_静态; public class Demo {

Mona_lxh的博客 244

深入探索 SEED-VII:情感脑电图研究的新利器

SEED-VII是上海交通大学最新发布的多模态情感脑电图数据集,在传统EEG数据基础上增加了眼动、生理信号等多维信息,支持更精细的情感识别研究。该数据集提供了丰富的情感维度标注(效价和唤醒度),可用于算法基准测试、跨模态情感融合及个性化模型开发等研究场景。在应用层面,SEED-VII可推动人机交互、心理健康监测、教育娱乐等领域的情感计算技术发展。文章还提供了PyTorch加载该数据集的代码示例,为研究者使用该数据集提供了技术参考。

qq_32516809的博客 1745

手把手教你使用 YOLOv11/v8 算法 + PaddleOCR 算法完成车牌检测和车牌识别系统,AI智能体,毛玻璃系统,包括PaddlePaddle安装、数据集预处理、模型训练、AI大模型应用等

手把手教你使用 YOLOv11/v8算法 + PaddleOCR算法完成车牌检测和车牌识别系统,AI智能体,毛玻璃系统,包括PaddlePaddle安装、数据集预处理、模型训练、AI大模型应用等。车牌识别系统支持 蓝牌、绿牌、黄牌、双层车牌等车牌识别。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2779

【Java】继承和多态

上述图示中,Dog和Cat都继承了Animal类,其中:Animal类称为父类/基类或超类,Dog和Cat可以称为Animal的子类/派生类,继承之后,子类可以复用父类中成员,子类在实现时只需关心自己新增加的成员即可。总结:成员方法没有同名时,在子类方法中或者通过子类对象访问方法时,则优先访问自己的,自己没有时再到父类中找,如果父类中也没有则报错。(1)通过子类对象访问父类与子类中不同名方法时,优先在子类中找,找到则访问,否则在父类中找,找到则访问,否则编译报错。2、子类和父类成员变量同名。

2301_79765510的博客 2072

openharmony之UniProton内核技术揭秘:鸿蒙面向工业控制领域的RTOS设计之道

UniProton是鸿蒙操作系统面向工业控制领域的轻量级实时操作系统(RTOS),专为资源受限的嵌入式设备设计。作为鸿蒙生态的重要组成部分,UniProton提供了高效的实时任务调度、内存管理和IPC机制,满足工业控制场景对实时性和可靠性的严格要求。想象一下,UniProton就像一个超级聪明的管家,管理着电子设备里所有的工作。让你的智能手表既能显示时间,又能接收消息让家里的扫地机器人既能避开障碍物,又能记住哪里已经打扫过了让工厂里的机器人手臂既能精确地抓取东西,又能快速地完成任务实时性强。

m0_67505153的博客 883

java继承和多态

多态,就是指方法多种状态,换句话说就是同一个方法会表现不同的的状态。

weixin_69873230的博客 2020

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java:继承和多态

面向对象程序三大特性:封装、继承、多态。在前的一章我们已经了解了什么是封装,而今天我们就要开始了解后面的两个————继承和多态。在Java中如果要表示类之间的继承关系,需要借助extends关键字那么让我们来举个例子,我们知道猫和狗都可以拥有名字和年龄,和吃饭的行为,对于这些共性的行为和属性,我们可以将它放入一个类当中,让这个类作为父类,而我们的猫类和狗类作为子类,同时着不相同的行为和属性,而这些我们会将他们放入自己的类当中,而共同拥有的这些行为和属性我们可以通过继承来获得他们 。(1)子类中访问父类的成员

zm3rttqs9f的博客 2280

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java——继承和多态

上篇文章讲了类和对象,本篇就来讲述Java中的继承和多态,这两个也是非常重要的内容。以上就是继承和多态的内容了,希望大家看完之后能够对他们有更深入的了解。

2301_80817503的博客 1643

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java 继承 多态

父类引用 子类对象不一样的时候,调用重写的方法,所表现出的行为不一样,这种思想————多态(大白话)不同对象的引用,调用同一个方法,产生的结果不一样————多态。

2401_83177222的博客 1335

JAVA继承和多态

JAVA继承和多态

Excuse_lighttime的博客 1461

java封装 继承 多态_Java 封装、继承、多态

Java 封装、继承、多态1.封装:封装的理解:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,并通过该类提供的方法来实现对隐藏信息的操作和访问。(简单的说就是隐藏对象的信息,留出访问的接口)。特点:1.只能通过规定的方法访问数据;2.隐藏类的实例细节,方便修改和实现。实现封装的方式:使用访问控制符:java提供了三种访问权限,准确的说还有一种是默认的访问权限,加上它一共四种。private...

weixin_39850331的博客 2951

java之继承与多态

带你轻松了解多态与继承

G13138200303的博客 1418

继承和多态(JAVA)

将一个子类对象经过向上转型之后当成父类方法使用,再无法调用子类的方法,但有时候可能需要调用子类特有的方法,此时:将父类引用再还原为子类对象即可,即向下转换。由图可知,向下转型并不安全如下列代码Cat cat = new Cat("元宝",2);Dog dog = new Dog("小七", 1);// 向上转型// 向上转型// 程序可以通过编程,但运行时抛出异常---因为:animal实际指向的是狗。

HYY的博客 1104

Java-继承和多态

Java继承是面向对象编程中的一个核心概念,它允许一个新的类(称为子类或派生类)基于一个已存在的类(称为父类或基类)进行定义,从而子类可以继承父类的属性和方法。这种机制可以避免代码重复,提高代码的可重用性,并有助于建立一个类的层次结构。在Java中,继承是通过`extends`关键字来实现的。当一个类继承另一个类时,它将自动获取父类中所有非私有(即public和protected)的成员变量和方法。这意味着子类可以重用和扩展父类的功能,而不需要重新编写相同的代码。

2202_75517599的博客 1120
上一篇: 2021-07-30 报错解决
下一篇: Java包装类
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值