Java入门:09.Java中三大特性(封装、继承、多态)02

news2024/9/19 22:04:59

2 继承

需要两个类才能实现继承的效果。 比如:类A 继承 类B

  • A类 称为 子类 , 衍生类,派生类

  • B类 称为 父类,基类,超类

继承的作用

  1. 子类自动的拥有父类的所有属性和方法 (父类编写,子类不需要再编写) 。 代码复用

    目前私有的属性和方法无法访问。

  2. 多态的基础。

继承语法

  • 先定义父类 (单独的类)

  • 在定义子类的同时,实现与父类的继承关系

class B{
    String name ;
    public void t1() {}
}
​
class A extends B{
    //String name ;
    //public void t1() {}
}
​
A a = new A();
a.name = "zs" ;
a.t1();

继承特点

  1. 继承具有传递性

    A extends B extends C

    A类中,既有B类的内容,又有C类的内容

  2. 基础具有不可逆性

    A extends B

    A类中,有B类的内容

    但B类中没有A类的内容。

  3. Java只支持单继承 (C++支持多继承)

    一个类只能继承一个父类。

    但可以连续继承 A extends B extends C

    A extends B A extends C 不可以的

3 子类对象的创建过程

  • 不存在父类对象这个概念

class A{
    String name ;
    public void t1(){}
}
class B extends A{
    int age ;
    public void t2(){}
}
​
new A(); //不算父类对象
new B() ;//这就是我们所说的子类对象
 
  • 尽管B对象中的name属性,是从A类中继承而来的

  • 但使用过程中,直接通过name名称就可以访问到。

  • 可以使用JOL工具来查看内存结果

4 super关键字

可以指定父类的内容 (属性,方法,构造方法)

一般情况下,在子类中,可以默认指定父类的内容。

  • 变量访问的顺序: 局部变量->类变量->父类变量->报错

    class B{
        String name1 ;
    }
    class A extends B{
        String name1 ;
        public void t1(){
            String name1 ;
            print(name) ;
        }
    }

    但有些情况必须使用super来指定父类的内容

  1. 子类中写了与父类中同名的属性和方法 (重写)

  2. 在子类的构造方法中,指定要调用的父类的构造方法

    在创建子类对象时,不仅仅子类对象的构造方法会被调用,父类的构造方法也会被调用

    是在子类构造方法的第一行被调用的。 (先调用子类的构造器,先执行完父类的构造器)

    默认会在子类构造方法的第一行,执行super(),表示调用父类的无参构造器

class A{
    String name ;
    public void t1(){}
}
​
class B extends A{
    
    public void t1(){}
    public void t2(){
        name = "ls" ;
        name = "zs" ;
        super.t1();
    }
}
class A{
    int a ;
    int b ;
    public A(int a , int b){
        this.a = a ;
        this.b = b ;
    }
    public void A(){}
}
​
class B extends A{
    int c ;
    int d ;
    public B(){}
    public B(int c , int d){}
    public B(int a , int b , int c, int d){
        //想将a和b交给父类的构造器
        //super()
        super(a,b);
        this.c = c ;
        this.d = d ;
    }
}
​
B b =  new B(10,20,30,40);

this和super关键字

  • 在使用上,this和super特点相似

  • 但本质上完全不同

  • this的本质,是一个参数变量,存储的是当前方法所属对应的地址。

  • super的本质,就是一个关键字,用来指定父类的内容。这个指定效果在编译后就没有了。

    而this是在运行时有所应用的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2147136.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实验2 Linux文件系统常用操作实践

实验2 Linux文件系统常用操作实践 一、实验介绍 本节实验通过实战Linux文件操作模块的基本操作,需要先掌握linux文件系统的原理以及理解linux文件操作的原理,最后通过实操完成linux文件操作的命令,其中包括改变目录、创建目录及文件、删除文件、复制文件、文件移动和改名、查…

BPG的定义和工作原理是什么?

在当今互联网中,网络通信的关键角色之一是BGP(边界网关协议)。BGP是一种路由矢量协议,负责在自治系统之间交换路由信息,并帮助数据包找到通过网络的理想链路。本文将介绍BGP、BGP4和BGP4,以及它们在网络中的…

记录生产环境,通过域名访问的图片展示不全,通过ip+端口的方式访问图片是完整的

原因:部署nginx的服务器硬盘满了 排查发现nginx日志文件占用了大量硬盘 解决方案: 删除该文件,重启nginx服务,问题解决。

郑重申明《数据资产管理核心技术与应用》一书在拼多多上被盗版售卖,恳请大家支持正版和作者的著作权权益

《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著,近期我本人在拼多多上很多不同的店铺中都买到了这本书的盗版版本,购书的原因是想从市场上购买一批本书送给忠实的读者和身边的朋友,但是发现买到…

pdf图片怎么提取出来?这6个pdf图片提取工具全搞定,值得推荐!

在我们的日常办公和学习中,pdf文件成为了信息传递的重要载体。然而,有时我们在pdf文档中发现一些精彩的图片,想将其提取出来供个人使用或分享给他人。无论是为了更灵活的处理,还是为了发送特定的图像,提取pdf中的图片都…

使用streaming-json-py插件处理JSON数据流:详细指南

目录 一、streaming-json-py简介 二、安装与配置 三、基本使用 示例1:处理不完整的JSON对象 示例2:处理不完整的JSON数组 四、高级用法 实时数据流分析 日志处理 五、性能优化与错误处理 六、总结与展望 在数据驱动的现代社会,实时处理数据流已成为许多应用和服务…

中国大气湿度指数数据集(2003-2020)

该数据集收录了2003-2020年中国大气湿度指数数据集,其中主要包括常用的5个大气湿度指数:真是水汽压(AVP)、水汽压亏缺(VPD)、露点温度(DPT)、混合比(MR)以及比…

HTML入门笔记

概述 HTML(超文本标记语言—HyperText Markup Language)是构成 Web 世界的基础,是一种用来告知浏览器如何组织页面的标记语言。 超文本 Hypertext:指连接单个或多个网站间的网页链接,通过这些链接可以访问互联网中的…

【算法题】322.零钱兑换-力扣(LeetCode)

【算法题】322.零钱兑换-力扣(LeetCode) 1.题目 下方是力扣官方题目的地址 322.零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任…

二百六十七、MySQL——海豚调度器创建MySQL库表

一、目的 为了方便部署,直接用海豚创建MySQL库表 二、实施步骤 2.1 准备好SQL文件,并上传海豚中 create database if not exists hurys_dc; use hurys_dc; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0; CREATE TABLE tb_holiday ( id int NOT …

城市脉络下的空间句法:中介中心性、接近中心性与绕行率的深度解析

这一篇是对上篇内容的继续深化,也就是sDNA “整体分析”(Integral Analysis)计算结果代表的意思,有哪些?意义是什么? 上篇文章指路:城市脉络下的空间句法:整合度与选择度的深度解析…

02:【HAL库】OLED模块的简单使用

将江科大的OLED标准库代码移植为HAL库代码 如上图所示:江科大将PB8和PB9配置为通用开漏输出,然后通过程序模拟I2C时序。 1、我们通过CubxMX软件将PB8和PB9也配置为通用开漏输出,其他的代码不变。 2、我们将江科大的OLED.c,OLED.h&…

关于循环Socket创建超Linux文件句柄限制现象分析

项目场景: 在操作系统的世界中万物皆文件。之前拜读过一些作品:针对于socket的创建,Linux也相应创建文件(专业术语中也称文件句柄),于是,我想做一些关于极限的操作,看看这些极限操作…

优化数据的抓取规则:减少无效请求

在爬取房价信息的过程中,如何有效过滤无效链接、减少冗余请求,是提升数据抓取效率的关键。本文将介绍如何优化爬虫抓取贝壳等二手房平台中的房价、小区信息,并通过代理IP、多线程、User-Agent和Cookies的设置,确保数据抓取的稳定性…

聊聊Netty对于内存方面的优化

写在文章开头 Netty通过巧妙的内存使用技巧尽可能节约内存空间,进而减少java中Full gc的STW的时间,由此间接的提升了程序的性能,本文也将直接从源码的角度分析一下Netty对于内存方面的使用技巧,希望对你有所启发。 Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java…

解决Filament中使用ARCore出现绿色闪屏的问题

解决Filament中使用ARCore出现绿色闪屏的问题 问题现象 使用AR的工程中,出现绿屏闪烁。问题帧截图如下: 问题定位 问题来源 在filament的1.21.0之前的版本,Stream对象提供了stream(long externalTextureId)方法,允许传递一个…

U盘显示未被格式化:深度解析与数据恢复指南

一、现象解析:U盘显示未被格式化之谜 在日常使用U盘的过程中,不少用户可能会遭遇一个令人头疼的问题——插入U盘后,系统提示“U盘未被格式化”,要求用户进行格式化操作以继续访问。这一突如其来的提示不仅打断了正常的工作流程&a…

[邀请函]2024上海工博会,盟通邀您共享盛典!

展会基本情况 9月24-28日,2024年中国国际工业博览会(简称"中国工博会")将在国家会展中心(上海)拉开帷幕。展会设9大专业展,数控机床与金属加工展、工业自动化展、节能与工业配套展、新一代信息技…

数据结构——链表(短小精悍版)

使用链表结构可以克服数组链表需要预先知道数据大小的缺点 链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。 但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。 单向链表: 一个…

MiniCPM3-4B | 笔记本电脑运行端侧大模型OpenBMB/MiniCPM3-4B-GPTQ-Int4量化版 | PyCharm环境

MiniCPM3-4B,轻松在笔记本电脑上运行大模型? 背景一、选择模型二、模型下载三、模型运行四、总结 背景 2024年9月5日,面壁智能发布了MiniCPM3-4B,面壁的测试结果声称MiniCPM3-4B表现超越 Phi-3.5-mini-instruct 和 GPT-3.5-Turbo-…