3-4、继承性

语雀原文链接

文章目录

    • 1、继承定义
    • 2、构造方法
    • 3、变量隐藏
    • 4、方法重写
    • 5、父子类的访问修饰符

1、继承定义

  • 继承是类与类之间的一种关系
  • 继承的好处
    • 子类拥有父类的所有属性和丰富(非private)
    • 减少代码冗余,实现代码重用
  • 继承的语法:子类 extends 父类{}
  • 单根继承:一个类只能有一个父类;但一个父类可以有多个子类
  • 子类会继承父类的属性+方法(有条件的)
public class Animal{public String name;/*** 父类默认构造方法*/public Animal(){System.out.println("Animal()");}protected void desc(){System.out.println("我的名字叫:"+name);}
}public class Dog extends Animal{}public class Main {public static void main(String[] aaa) {Animal animal = new Animal();animal.name = "tom";animal.desc();// 子类会集成父类的属性+方法Dog dog = new Dog();dog.name = "jack";dog.desc();}
}

2、构造方法

  • 子类实例化时,先调用父类的默认构造方法,再调用子类的构造方法
public class Animal{public String name;/*** 父类默认构造方法*/public Animal(){System.out.println("Animal()");}protected void desc(){System.out.println("我的名字叫:"+name);}
}public class Dog extends Animal{public Dog() {System.out.println("Dog()");}
}public class Main {public static void main(String[] aaa) {// Animal()// Dog()// 我的名字叫:jackDog dog = new Dog();dog.name = "jack";dog.desc();}
}
  • super:在子类的构造方法中调用父类的构造方法,用在子类的构造方法里,调用父类里的构造方法,super语句一定要处于整个构造方法的第一行
public class Animal{public String name;public int age;/*** 父类默认构造方法*/public Animal(){System.out.println("Animal()");}public Animal(int age){System.out.println("Animal(int age)");this.age = age;}public Animal(String name, int age){System.out.println("Animal(String name, int age)");this.name = name;this.age = age;}protected void desc(){System.out.println("我的名字叫:"+name);}
}public class Dog extends Animal{public Dog() {System.out.println("Dog()");}public Dog(String name) {// 对super的调用必须是构造器中的第一个语句
//        int a = 1;super(name,12);this.name = name;}
}public class Main {public static void main(String[] aaa) {// Animal(String name, int age)// 我的名字叫:jackDog dog1 = new Dog("jack");dog1.desc();}
}

3、变量隐藏

  • 如果子类和父类中都定义了一个同类型同名的属性,在子类中使用的就是子类的属性,如果想用父类的属性,则需要使用super
public class Animal{public String name;/*** 父类默认构造方法*/public Animal(){System.out.println("Animal()");}public void desc(){System.out.println("我的名字叫:"+name);}
}public class Dog extends Animal{private String name;public Dog() {System.out.println("Dog()");}public Dog(String name) {this.name = name;}public void desc(){System.out.println("我的名字叫:"+name);}public void test(){System.out.println(name);System.out.println(super.name);desc();super.desc();}
}public class Main {public static void main(String[] aaa) {// Animal()// jack// null// 我的名字叫:jack// 我的名字叫:nullDog dog1 = new Dog("jack");dog1.test();}
}

4、方法重写

  • 条件:子类里的方法名、形参、返回类型与父类里的方法完全一样

5、父子类的访问修饰符

  • private修饰的属性不能被子类继承,public、protected、默认 这三修饰符修饰的可以被继承
public class Animal{private String name;
}public class Dog extends Animal{}public class Main {public static void main(String[] aaa) {Dog dog1 = new Dog();// 报错 name 在 Animal 中是 private 访问控制dog1.name ="jack";}
}

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

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

相关文章

【JUC】二十八、synchronized锁升级之偏向锁

文章目录 1、偏向锁出现的背景2、从共享对象的内存结构看偏向锁3、偏向锁的持有4、启动偏向锁5、sleep暂停来启动偏向锁6、偏向锁的撤销7、总体流程8、SinceJava15 偏向锁的废除 1、偏向锁出现的背景 如果一个线程连续几次抢到锁,仍然重复加锁解锁,就会…

Hive的几种排序方式、区别,使用场景

一、几种排序和区别 Hive 支持两种主要的排序方式:ORDER BY 和 SORT BY。除此之外,还有 DISTRIBUTE BY 和 CLUSTER BY 语句,它们也在排序和数据分布方面发挥作用。 1. ORDER BY ORDER BY 在 Hive 中用于对查询结果进行全局排序&#xff0…

论文分享 | NeurIPS 2023 使用大语言模型进行超参数优化

文章目录 一、前言二、主要内容1. 引言2. 方法3. 结果三、总结🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 Foundation Models for Decision Making Workshop at NeurIPS 2023:Using Large Language Models for Hyperparameter Optimization Insight:我们…

【深度学习】注意力机制(六)

本文介绍一些注意力机制的实现,包括MobileVITv1/MobileVITv2/DAT/CrossFormer/MOA。 【深度学习】注意力机制(一) 【深度学习】注意力机制(二) 【深度学习】注意力机制(三) 【深度学习】注意…

产品入门第三讲:Axure产品流程图绘制

📚📚 🏅我是默,一个在CSDN分享笔记的博主。📚📚 ​​​​​ 🌟在这里,我要推荐给大家我的专栏《Axure》。🎯🎯 🚀无论你是编程小白,还…

oracle的函数怎么用

目录 使用流程经典案例 使用流程 Oracle函数是一段可重用的代码,可以接受一个或多个参数并返回一个值。您可以使用Oracle函数来执行特定的计算、转换或查询操作,并将结果返回给调用程序。下面是使用Oracle函数的一些示例: 创建函数 CREATE…

精通Nginx(23)-Nginx Plus增强功能之负载均衡

Nginx作为开源版,提供大量的丰富功能,能满足大部分需要。Nginx Plus是Nginx的加强版,是在开源Nginx功能基础上,提供了许多适合生产环境的专业功能,包括高可用性、主动健康检查、DNS 系统发现、会话保持和 RESTful API等,但这些功能基本都需要收费。本文讲述这些增强功能。…

机器人行业数据闭环实践:从对象存储到 JuiceFS

JuiceFS 社区聚集了来自各行各业的前沿科技用户。本次分享的案例来源于刻行,一家商用服务机器人领域科技企业。 商用服务机器人指的是我们日常生活中常见的清洁机器人、送餐机器人、仓库机器人等。刻行采用 JuiceFS 来弥补对象存储性能不足等问题。 值得一提的是&am…

349. 两个数组的交集

题目描述 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入: nums1 [1,2,2,1], nums2 [2,2] 输出: [2]示例 2: 输入: nums1 [4,9,5], nums2 [9,4,9,8,4] 输出: [9,4]说明: 输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。 解…

Docker容器如何优雅地访问宿主机网络

# 前言 某些时候,我们会有在容器内容访问宿主机某个服务的需求,比如现在 openai 无法直接访问,需要给项目添加代理,我的 chatgpt-dingtalk (opens new window) 项目支持了通过环境变量指定代理地址。 添加方式如下: …

嵌入式奇妙之旅:Python与树莓派编程深度探索

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 在这个数字化的时代,嵌入式系统的应…

主动学习与弱监督学习

人工智能数据的获取没有想象中的那么简单,虽然我们早已身处大数据的浪潮下,很多公司在获取数据的大浪中翻滚却始终没有找到一个合适的获取数据的渠道。很多情况下,获取高质量的人工智能数据需要消耗大量的人力、时间、金钱,但是对…

Vue3-08-条件渲染-v-if 的基本使用

v-if 是什么 v-if 一个指令, 它是用来根据条件表达式,进行选择性地【展示】/【不展示】html元素的。比如 : 有一个按钮A,当条件为真时,展示该按钮;条件为假时,不展示该按钮。与 js 中的 条件判…

绝地求生:PGC2023胜者组D2下半场:17天霸成功晋级,TL、NH跌入最后机会组

第四场 第一名:LGC 第二名:T5 第三名:FaZe 17仅剩两人,T5踩住高点,sujiu前顶时被T5架枪位击倒,小鬼的盾牌没能挡住对方的雷遗憾第五出局。然而T5自己也进圈不易,仅剩两人。 LG独狼卡住T5却忽…

Leetcode 2132. 用邮票贴满网格图(Java + 两次一维前缀和 + 二维差分)

Leetcode 2132. 用邮票贴满网格图(Java 两次一维前缀和 二维差分) 题目 给你一个 m x n 的二进制矩阵 grid ,每个格子要么为 0 (空)要么为 1 (被占据)。给你邮票的尺寸为 stampHeight x sta…

Linux_Ubuntu 系统入门

Ubuntu 系统是和 Windows 系统一样的大型桌面操作系统,因此功能非常强大。 本节的目的是掌握后续嵌入式开发所需的 Ubuntu 基本技能,比如系统的基本设置、常用的 shell 命令、vim 编译器的基本操作等等…… Ubuntu 的图形化界面操作和 Windows 下基本一致…

数据分析基础之《matplotlib(3)—散点图》

一、常见图形种类及意义 1、matplotlib能够绘制折线图、散点图、柱状图、直方图、饼图。我们需要知道不同的统计图的意义,以此来决定选择哪种统计图来呈现我们的数据 2、折线图plot 说明:以折线的上升或下降来表示统计数量的增减变化的统计图 特点&…

使用Docker快速搭建一套三主三从Redis集群用于开发、测试

文章目录 一 基本概念二 部署流程2.1 准备配置文件2.2 启动6个 Docker 容器2.3 集群搭建 三 总结四 参考资料 一 基本概念 Redis集群是一种通过将多个Redis节点连接在一起以实现高可用性、数据分片和负载均衡的技术。它允许Redis在不同节点上同时提供服务,提高整体…

智能优化算法应用:基于白鲸算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于白鲸算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于白鲸算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.白鲸算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

实践干货 | CodeWave如何支持多人协作开发应用

在传统软件开发领域里,要完成具备一定复杂程度的软件,通常都会由一个研发团队协作开发。软件复杂度越大,研发团队的规模也就越大。 为了让研发团队能够高效的进行协同开发,业务引入了优秀的代码版本管理工具,比如传统软…