【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4)

🌈个人主页: Aileen_0v0
🔥系列专栏:Java学习系列专栏
💫个人格言:"没有罗马,那就自己创造罗马~"

目录
继承
私有成员变量在继承中的使用编辑
当子类和父类变量不重名时:
当子类和父类重名时:
📝总结:
继承的含义:
toString方法的作用:
重写和重载的区别
继承
package Inherit;class Dog {public String name;public int age;public void barks() {System.out.println(name + "汪汪叫!");}public void eat() {System.out.println(name + "正在吃饭!");}
}class Cat{public String name;public int age;public void eat() {System.out.println(name + "正在吃饭!");}public void CatchMouse() {System.out.println(name + "正在抓老鼠");}
}public class Test{public static void main(String[] args) {}
}

对比狗和猫这两个类,我们会发现它们有共同的属性,name,age 和 eat.
我们可以把它们相同的抽离出来,放到同一个Animal类里面.
通过extends(继承)关键字,让子类继承父类
当子类继承父类之后,就会把属性和方法全部继承.
继承:就是抽取共性,从而达到代码的复用[重复使用]
![]()
package Inherit;class Animal{public String name;public int age;public void eat() {System.out.println(name + "正在吃饭!");}
}class Dog extends Animal{public void barks() {System.out.println(name + "汪汪叫!"+"年龄"+ age);}}class Cat extends Animal{public void CatchMouse() {System.out.println(name + "正在抓老鼠");}
}public class Test{public static void main(String[] args) {Dog dog = new Dog();//属性继承dog.name = "旺财";dog.age = 10;dog.barks();//方法继承dog.eat();}
}
注意:
1.子类会将父类中的成员变量或成员方法继承到子类中.
2.子类继承父类之后,必须要新添加自己特有的成员,体现它与父类的不同,否则没有必要进行继承.
私有成员变量在继承中的使用
注意:私有的成员 可以被继承 但是不能访问.
若想访问,我们可以通过 get和 set方法进行访问
代码如下:
package Inherit;class Animal{private String name;public int age;public void eat() {System.out.println(name + "正在吃饭!");}public String getName() {return name;}public void setName(String name) {this.name = name;}
}class Dog extends Animal{public void barks() {System.out.println(getName() + "汪汪叫!"+"年龄"+ age);}}class Cat extends Animal{public void CatchMouse() {System.out.println(getName() + "正在抓老鼠");}
}public class Test{public static void main(String[] args) {Dog dog = new Dog();//属性继承dog.setName("旺财");dog.age = 10;dog.barks();//方法继承dog.eat();Cat cat = new Cat();//属性继承cat.setName("喵喵");cat.age = 10;cat.CatchMouse();//方法继承cat.eat();}
}

当子类和父类变量不重名时:
package Inherit;/*** 子类和父类不存在同名变量时*/class Base{int a;int b;
}
public class Derived extends Base{int c;public void method(){a = 10;//来自父类b = 20;//来自父类c = 30;System.out.println(a);System.out.println(b);System.out.println(c);}public static void main(String[] args) {Derived derived = new Derived();derived.method();}
}
控制台运行结果:

当子类和父类重名时:
package Inherit;/*** 子类和父类存在同名变量时*/class Base{int a;int b;public void methodA() {System.out.println("Base 中的methodA()");}
}public class Derived extends Base{int a = 60;// 与父类成员 a 同名,类型相同 char b = 'o';//与父类成员 b 同名,不同类int c;public void methodB() {System.out.println("Derived 中的 methodB()方法");}public void methodC() {methodB();//访问子类自己的methodB()methodA();//访问父类继承的methodA()
// methodD();//编译失败,在整个继承过程中没有发现方法}public void method(){// a = 10;//来自父类b = 20;//来自父类c = 30;System.out.println(super.a);System.out.println(a);System.out.println(b);System.out.println(c);}public static void main(String[] args) {Derived derived = new Derived();derived.method();
父类与子类重合,优先访问子类
控制台运行结果:

📝总结:
继承的含义:
抽取共性,通过子类继承(extends)父类,达到代码复用
toString方法的作用:
在JAVA中,toString()方法是Object类中的一个方法,它的作用是返回一个表示对象的字符串。当我们需要将一个对象转换为字符串时,可以使用toString()方法。
如果我们没有重写该方法,则默认返回对象的类名和哈希码。
下面是一个toString()方法的代码案例:
public class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}public static void main(String[] args) {Person person = new Person("Tom", 20);System.out.println(person.toString());}
}
在上面的代码中,我们定义了一个Person类,并重写了toString()方法,返回了一个包含name和age属性的字符串。在main方法中,我们创建了一个Person对象,并使用toString()方法将其转换为字符串并输出。
重写和重载的区别
JAVA官方语法文档链接🔗👉:The Java® Language Specification
通过ctrl + F 找到 overload重载

重写和重载都是面向对象程序设计中的概念,它们的作用都是实现多态。但是它们的含义和实现方式是不同的。
重载(Overload):指的是在同一个类内部或者父子类之间,方法名相同,但是参数列表不同(参数类型、参数个数、参数顺序),返回值类型可以是相同的也可以不同的。这样的方法就叫做重载方法。
编译器根据调用时传递的不同参数,来确定调用的具体方法。
重写(Override):是指子类重写父类的方法,方法名、参数列表、返回值类型都与父类相同。这时候子类中的方法会覆盖掉父类中的方法,实现多态。
下面是一些示例代码:
重载:
public class OverloadExample {public int add(int a, int b) {return a + b;}public int add(int a, int b, int c) {return a + b + c;}
}
重写:
public class OverrideExample {public static void main(String[] args) {Animal animal = new Dog();animal.eat();}
}class Animal {public void eat() {System.out.println("Animal is eating");}
}class Dog extends Animal {@Overridepublic void eat() {System.out.println("Dog is eating");}
}
在上面的重写示例中,Dog 类继承自 Animal 类,重写了 eat() 方法。使用多态的方式创建了一个 Animal 类对象 animal,然后调用 eat() 方法,实际调用的是 Dog 类中重写的 eat() 方法,输出 "Dog is eating"。


相关文章:
【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4)
🌈个人主页: Aileen_0v0🔥系列专栏:Java学习系列专栏💫个人格言:"没有罗马,那就自己创造罗马~" 目录 继承 私有成员变量在继承中的使用编辑 当子类和父类变量不重名时: 当子类和父类重名时: 📝总结: 继承的含义: …...
单细胞seurat入门—— 从原始数据到表达矩阵
根据所使用的建库方法,单细胞的RNA序列(也称为读取(reads)或标签(tags))将从转录本的3端(或5端)(10X Genomics,CEL-seq2,Drop-seq&…...
Docker部署Nacos
此篇文章使用的nacos为2.2.1版本 拉取Nacos镜像 docker pull nacos/nacos-server:v2.2.1先将容器启动起来 docker run -d \ --name nacos \ -p 8848:8848 \ -p 9848:9848 \ -p 9849:9849 \ --privilegedtrue \ -e JVM_XMS256m \ -e JVM_XMX256m \ -e MODEstandalone \ -e NA…...
1005. K 次取反后最大化的数组和
原题链接:1005. K 次取反后最大化的数组和 思路: 先把数组排序好,然后直接从下标0(最小的负数)开始反转,那么接下来有两种情况: 1.负数反转完了,k还有剩余。此时因为nums内全部都是正数,所以我…...
【云原生】什么是 Kubernetes ?
什么是 Kubernetes ? Kubernetes 是一个开源容器编排平台,管理着一系列的 主机 或者 服务器,它们被称作是 节点(Node)。 每一个节点运行了若干个相互独立的 Pod。 Pod 是 Kubernetes 中可以部署的 最小执行单元&#x…...
自建CA实战之 《0x01 Nginx 配置 https单向认证》
自建私有化证书颁发机构(Certificate Authority,CA)实战之 《0x01 Nginx 配置 https单向认证》 上一篇文章我们介绍了如何自建私有化证书颁发机构(Certificate Authority,CA),本篇文章我们将介…...
《QT从基础到进阶·三十八》QWidget实现炫酷log日志打印界面
QWidget实现了log日志的打印功能,不仅可以在界面显示,还可以生成打印日志。先来看下效果,源码放在文章末尾: LogPlugin插件类管理log所有功能,它可以获取Log界面并能打印正常信息,警告信息和错误信息&…...
JVM的小知识总结
加载时jvm做了这三件事: 1)通过一个类的全限定名来获取该类的二进制字节流 什么是全限定类名? 就是类名全称,带包路径的用点隔开,例如: java.lang.String。 即全限定名 包名类型 非限定类名也叫短名,就…...
深入理解JVM虚拟机第二十六篇:详解JVM当中的虚方法和非虚方法,并从字节码指令的角度去分析虚方法和非虚方法
😉😉 学习交流群: ✅✅1:这是孙哥suns和树哥给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824 📚📚 微信:DashuDeveloper拉你进微信群,免费领取! 一:非虚方法和虚方法 方法…...
ElasticSearch的日志配置
ElasticSearch默认情况下使用Log4j2来记录日志,日志配置文件的路径为$ES_HOME/config/log4j2.properties,配置方法见Log4j2的官方文档。 参考path-settings,通过指定path.logs,可以指定日志文件的保存路径。 在日志配置文件$ES_…...
SQL Injection (Blind)`
SQL Injection (Blind) SQL Injection (Blind) SQL盲注,是一种特殊类型的SQL注入攻击,它的特点是无法直接从页面上看到注入语句的执行结果。在这种情况下,需要利用一些方法进行判断或者尝试,这个过程称之为盲注。 盲注的主要形式有…...
NX二次开发UF_CURVE_ask_trim 函数介绍
文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_trim Defined in: uf_curve.h int UF_CURVE_ask_trim(tag_t trim_feature, UF_CURVE_trim_p_t trim_info ) overview 概述 Retrieve the current parameters of an a…...
linux的netstat命令和ss命令
1. 网络状态 State状态LISTENING监听中,服务端需要打开一个socket进行监听,侦听来自远方TCP端口的连接请求ESTABLISHED已连接,代表一个打开的连接,双方可以进行或已经在数据交互了SYN_SENT客户端通过应用程序调用connect发送一个…...
python:傅里叶分析,傅里叶变换 FFT
使用python进行傅里叶分析,傅里叶变换 FFT 的一些关键概念的引入: 1.1.离散傅里叶变换(DFT) 离散傅里叶变换(discrete Fourier transform) 傅里叶分析方法是信号分析的最基本方法,傅里叶变换是傅里叶分析的核心&…...
云原生系列Go语言篇-编写测试Part 2
基准测试 确定代码是快或慢非常复杂。我们不用自己计算,应使用Go测试框架内置的基准测试。下面来看第15章的GitHub代码库sample_code/bench目录下的函数: func FileLen(f string, bufsize int) (int, error) {file, err : os.Open(f)if err ! …...
CMake Error:No targets specified and no makefile found
在适用cmake构建项目的时候,突然遇到了这个报错 Make Error at CMakeLists.txt:1 (project): VERSION not allowed unless CMP0048 is set to NEW – Configuring incomplete, errors occurred! make: *** No targets specified and no makefile found. Stop. CMake…...
常见树种(贵州省):019滇白珠、杜茎山、苍山越桔、黄背越桔、贵州毛柃、半齿柃、钝叶柃、细枝柃、细齿叶柃木、土蜜树、山矾、胡颓子、檵木
摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、滇白珠…...
java - 定时器
一、什么是定时器 定时器是指可以通过 Java 中的 Timer 类和 TimerTask 类所提供的功能来实现定期执行某些任务的工具。 标准库中提供了一个 Timer 类 . Timer 类的核心方法为 schedule . schedule 包含两个参数 . 第一个参数指定即将要执行的任务代码 , 第二个参数指定多…...
jQuery【菜单功能、淡入淡出轮播图(上)、淡入淡出轮播图(下)、折叠面板】(五)-全面详解(学习总结---从入门到深化)
目录 菜单功能 淡入淡出轮播图(上) 淡入淡出轮播图(下) 折叠面板 菜单功能 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><…...
攻防非对称问题| 当前企业面临的网络攻防非对称问题及其解决途径
随着信息技术的不断发展,网络已经成为我们日常生活和商业活动中不可或缺的一部分。然而,随之而来的是网络安全问题的不断升级。网络攻防非对称问题是当前亟待解决的一个复杂而严峻的挑战。其主要的表现是攻击成本远低于防御成本以及相同投入带来的攻击能…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

