Java 面向对象(OOP)中的 this 和 super 关键字,这是类与对象、继承、多态 的进阶点

java面向对象超详细总结(期末必备) 文章目录面向对象:什么是对象:对象的组成:类是什么:类的组成:类的创建语法类的使用:使用类必须为类创建对象:调用属性:调用方法:方法的重载:构造方法:构造函数,构造器构造器的语法:对象的引用:this关键字:OOP练习:练习一案例代码:练习二案例代码:练习三:案例代码:static关键字的使用:类的组成:属性(成员变量)和方法(成员方法)实例变量和类变量的区别:静态代码块:访问修饰符的使用:封装:面向对象程序设计的三大特征之一代码演示:实验练习:案例代码:继承:面向对象的三大特征之一继承的语法:继承的特点: 阅读详情

1. this 关键字

this 表示 当前对象的引用,可以用来访问对象的属性、方法,或者调用同类的构造方法。

1.1 访问当前对象的属性

当局部变量和成员变量重名时,用 this 区分:

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

    public Person(String name, int age) {
        this.name = name; // this.name 指成员变量
        this.age = age;   // age 是局部变量
    }

    public void sayHello() {
        System.out.println("我叫" + this.name + ",今年" + this.age + "岁");
    }
}

1.2 调用当前对象的方法

public class Person {
    public void eat() {
        System.out.println("吃饭");
    }

    public void live() {
        this.eat(); // 调用当前对象的 eat 方法
        System.out.println("生活");
    }
}

1.3 调用同类的构造方法(构造器重载)

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

    public Person() {
        this("未知", 0); // 调用带参构造方法
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

✅ 总结 this 用途:

  1. 引用当前对象属性或方法

  2. 调用同类其他构造方法

  3. 在方法链或构造方法中增强可读性


2. super 关键字

super 表示 父类对象的引用,用于访问父类的属性、方法或构造方法。

2.1 访问父类属性

class Animal {
    String name = "动物";
}

class Dog extends Animal {
    String name = "狗";

    public void printNames() {
        System.out.println(name);       // 子类属性
        System.out.println(super.name); // 父类属性
    }
}

2.2 调用父类方法

class Animal {
    public void eat() {
        System.out.println("动物吃东西");
    }
}

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

    public void test() {
        eat();         // 调用子类重写方法
        super.eat();   // 调用父类方法
    }
}

2.3 调用父类构造方法

class Animal {
    String name;
    public Animal(String name) {
        this.name = name;
    }
}

class Dog extends Animal {
    public Dog(String name) {
        super(name); // 调用父类构造方法初始化 name
    }
}

✅ 总结 super 用途:

  1. 访问父类属性(被子类覆盖时使用)

  2. 调用父类方法(被子类重写时使用)

  3. 调用父类构造方法(必须是子类构造方法第一行)


3. this 与 super 区别对比

关键字指向对象用途
this当前对象访问本类属性、方法,调用本类构造方法
super父类对象访问父类属性、方法,调用父类构造方法

4. 小结与示例

class Animal {
    String name;
    public Animal(String name) {
        this.name = name;
    }
    public void eat() {
        System.out.println(name + " 在吃");
    }
}

class Dog extends Animal {
    String name = "狗";

    public Dog(String name) {
        super(name); // 调用父类构造方法
    }

    public void show() {
        System.out.println(this.name);  // 子类属性
        System.out.println(super.name); // 父类属性
        this.eat();                     // 子类方法(如果重写了)
        super.eat();                     // 父类方法
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("旺财");
        dog.show();
    }
}

✅ 输出:

狗
旺财
旺财 在吃
旺财 在吃
Python数据可视化 Pyecharts 制作 Map 地图 大家好,我是Mr数据杨。想象一下,作为一名军师,如诸葛亮或郭嘉,'Map’就如同那战争的沙盘,兵马行动的轨迹,都需要准确的地图作为基础。‘基本设置’,就如同摆设这张战争沙盘,规定棋子的起始位置。‘数据配置选项’和’地图数据项’,就好比是军师们手中的情报,了解各路诸侯的兵力、粮草、地形等重要信息,以便于他们更好地布局。‘Demo’则代表着练兵之地,军师们可以在此基于已有数据,试验各种战术。 阅读详情

相关推荐

泛微Ecology9单点登录实战指南:从Token获取到页面跳转

本文提供了一份详尽的泛微Ecology9单点登录实战指南,重点解析了Token跳转式SSO的核心流程。内容涵盖从理解关键参数(如appid、loginid)与一次性Token机制,到通过代码示例演示如何正确调用接口获取Token,并详细说明了拼接不同场景跳转地址的完整规则与安全实践,旨在帮助开发者高效、稳定地实现业务系统与OA门户的无缝集成。

ol789012345的博客 1068

Java面向对象

Java面向对象编程(Object-Oriented Programming,OOP)是一种程序设计思想,其核心理念是将数据和操作数据的方法封装在一起,形成一个独立的单元,即“对象”。这种思想使得程序设计更加符合人类的认知方式,提高了代码的复用性、可维护性和扩展性。

m0_70296476的博客 3107

【一步到位】Android Studio 实现安卓连接阿里云物联网云平台

最新版本目前是Android Studio Iguana | 2024.1.2,你可以到官网上去找之前的版本,手上有工作项目的不要去轻易尝试,说不定你就编译失败了,失败了也不要担心,解决就可以了。

m0_73799445的博客 1万+

面向对象 05:三大特性之——继承,继承在 Java 中的相关使用,区分关键字 super 和 this,方法重写的注意点

本文讲述面向对象编程的三大特性之——继承。通过案例分析,讲述了继承的概念,及其在 Java 中的相关使用。此外,文章详细介绍了关键字 super 和 this 的区别,还有方法重写的注意点。

积累,沉淀,温故而知新 1371

ESP32-S3模组上跑通esp32-camera(32)

ESP32-S3模组上跑通esp32-camera(32)

phmatthaus的专栏 772

【unity实战】Unity手搓脚本工具实现合并网格功能

本文介绍了在Unity中优化网格性能的方法,通过合并重复网格减少绘制调用。主要使用Mesh.CombineMeshes方法实现网格合并,支持统一材质和多材质处理。核心内容包括:1)基础合并脚本实现,将子网格合并到父对象并禁用原网格;2)统一材质设置,支持自定义或默认材质;3)多材质合并方案,通过设置mergeSubMeshes=false保留子网格材质索引。文章还提供了完整代码示例和操作演示,适用于实际项目中的网格优化需求。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 559

【JavaScript 进阶教程】面向对象

ES6 是 JavaScript 语言的下一代标准,全称ECMAScript 6.0,ECMAScript 是JavaScript语言的国际标准,JavaScript是ECMAScript的实现,ES6 使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。......

weixin_52212950的博客 2521

C 语言多文件编程 : 大型程序的组织与管理

本文介绍了C语言多文件编程的核心概念与实践方法。主要内容包括:1. 多文件编程的必要性:解决单文件编程在大型项目中的维护和协作问题;2. 文件组织方式:头文件(.h)负责声明接口,源文件(.c)实现具体功能;3. 编译链接过程:分阶段编译和链接多个源文件;4. 头文件设计原则:包含接口声明、使用保护机制、保持自包含性;5. 模块化实践:通过示例展示学生信息管理系统的模块划分;6. 构建工具:介绍Makefile的编写和使用方法。文章还提供了创建静态库和动态库的指导,并强调了模块化设计、信息隐藏等软件工程原则

2503_91057718的博客 1947

面向对象(OOP)

面向对象程序设计(OOP - object oriented programming) 面向对象程序由对象组成,每个对象对用户公开特定功能并隐藏实现的部分,很多的对象来自Java标准库,也存在一部分是开发者自定义的,只要当前对象能够满足要求,就不必去关心其功能是如何实现的。 面向对象将数据放在第一位,再去考虑操作数据的算法,操作数据的过程也就被称为方法。 类便是构建对象的模板,由类构造对象的过程称为创建类的实例。创建时使用构造器(构造函数)创建新实例(对象),如果希望构造的对象可以多次使用,那么就会将对象存

天宇龙腾的博客 4704

UG NX二次开发(C#)-建模-获取圆柱面信息(轴向、半径、深度)

获取圆柱面的信息前言一、在UG NX中面的类型有哪些?二、获取圆柱面信息的函数1.获取半径和轴向2、计算圆柱面的深度值3、测试用例总结 文章目录前言一、在UG NX中面的类型有哪些?二、获取圆柱面信息的函数1.获取半径和轴向2、计算圆柱面的深度值3、测试用例总结 前言 在一个项目中,需要遍历曲面,获得所有的圆柱面和圆柱面的信息,包括轴向、半径和圆柱面的深度。经过研究,采用uFModl.AskFaceData(face.Tag, out faceTypeInt, point, dir, box, out

GimiGimmy 4145

将Windbg附加到软件进程上排查异常闪退的问题

使用Windbg和Process Explorer排查因为内存泄漏导致的软件异常闪退问题。

dvlinker的技术专栏 1万+

java day12 面向对象oop深入之三大特性

当AB中的static去掉,会发生什么变化?(A中public void行左侧出现箭头向上的小圈,B中该行出现箭头1向下的小圈)这就是方法的重载现在删除掉a中的public void那一行。

2302_81093382的博客 1299

嵌入式Linux&Android开发-环境搭建

目录 一、环境要求 二、相关软件&SDK下载 三、环境安装 3.1 VMware Worksation 3.2 Ubuntu1804 3.3 VSCode安装 3.4 Samba服务器搭建 一、环境要求 编译 Android 对机器的配置要求较高: 64 位 CPU 大于12GB 物理内存+交换内存(最好16GB以上) 30GB 空闲的磁盘空间用于构建,源码树另外占用大约 25GB, 如果要编译源码则还需要 150GB 的磁盘空间。 RK官方推荐使用 Ubuntu 16..

嵌入式成长手册 548

面向对象详解

类,是一个抽象的概念,不能直接使用,要使用类中的属性和功能,必须对类进行实例化,我们可以使用关键字new(静态Static修饰的不需要new来实现)。而实际上我们在创建对象时,除了使用关键字new之外,还得借助构造方法来完成对类的实例化。

qq_46189388的博客 4281

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java——面向对象_java面向对象,零基础入门到精通,收藏这篇就够了

Java是一门纯面向对象的语言,在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。Java中有很多对象来自标准库,还有一部分由自己定义。从根本上说只要对象能够满足要求,就不必关心其功能的具体实现过程。在OOP中不必关心对象的具体实现,只要其能够满足用户的需求即可。以面向对象的方式进行处理,就不需要关注工作执行的过程,通过对象之间的交互便可以完成一件事情。

Python_0011的博客 1907

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

初识JAVA-面向对象的三大特征之继承

继承专门用来进行共性的提取,实现代码的复用。继承是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加新功能,这样的类是派生类(子类)。

2301_76928097的博客 1477

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java面向对象OOP核心知识

如果在构造⽅法中没有显式地使⽤ this 来调⽤另⼀个构造⽅法,则会⾃动调⽤⽆参数的构造 ⽅法(如 果存在) 但如果在构造⽅法中已经使⽤了 this() 来调⽤另⼀个构造⽅法,则不能再 调⽤另⼀个构造⽅法或默认 构造⽅法。实现了代码的复⽤,重写从⽗类那⾥继承来的⽅法的,当调⽤⽅法时候会优先调⽤⼦类的⽅ 法(默认就近原则)。⼦类不能继承⽗类的构造⽅法,但⼦类在创建对象时会⾃动调⽤⽗类的构造⽅法(如果⽗类 有默认构造⽅法)。

qq_74916326的博客 1018

java语法基础3:面向对象 类(封装 继承 多态 关键字)

面向过程:以过程为核心,强调事件的流程、顺序代表语言:C语言面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。以做饭为例,面向过程就像是蛋炒饭,第一步放鸡蛋,再放饭,随后是调料和葱花。面向对象:以对象为核心,强调事件的角色、主体,如:C++、Java。OO:Object Oriented 面向对象。包括OOA,OOD,OOP。OOA:Object Oriented Analysis 面向对象分析。

haoloved的博客 1050

【java 基础二 】- 面向对象、类、接口等

Java面向对象编程(OOP)是一种编程范式,其旨在通过将程序逻辑封装在对象中来使代码更易于理解和维护。Java是一种面向对象的编程语言,它支持封装、继承和多态等概念。Java语言是面向对象的语言,因此对象是Java语言的核心,外事万物皆为对象,面向对象有三大基本特征,如上,封装,继承,多态。

fumeidonga的博客 1527

Java OOP进阶:继承,抽象类、接口、多态

以这种方式定义的常量,说明这些常量需要被实现这个接口的类所使用。请注意要为它们设计出有意义的名字,以便保证代码的可读性。只要一个类声明实现了这个接口,就可以直接使用这些常量。定义在接口中的常量必须被初始化例子:就这样使用// 数组的下界// 数组的上界System.out.println("下界: " + LOWBOUND);System.out.println("上界: " + UPBOUND);// 打印界限值。

sjb2274540432的博客 1009

【java】【OOP】【xjtuse】面向对象程序设计 ppt翻译版

来背期末八股文啦!快来看全英ppt直翻!由于不够系统请配合下一篇一起食用。 什么是java?什么是oop?什么是JVM?java的执行模型?封装?多态?继承?运算符优先级?保留字有哪些?方法重载和方法重写有什么区别?四个访问修饰符的作用都是什么?this和super怎么用?字面量是什么?“is-a”“has-a”?字符串怎么拼接?字符串缓冲区怎么用?接口和抽象类的区别?

Genevieve_xiao的博客 1373

JAVA面向对象的三大特征--封装、继承、多态

面向过程:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。举例来说(办证)需要几步?按照面向过程思想:第一步:找到办事的人第二步:给办事的准备资料第三步 :办完证,证件反馈给我这里我们就看出来,面向过程就是把一件事按步骤一步一步来实现代码表示依次调用这些方法就行对 Java 语言来说,一切皆是对象。把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。

weixin_67224308的博客 3515

Java核心知识 1|面向对象编程(OOP)必会知识点汇总

抽象类不能实例化。可以包含抽象方法(没有方法体)。// 抽象方法System.out.println("画一个圆");知识点说明类与对象Java OOP 的基础封装保护数据,提供接口访问继承实现代码复用多态同一接口不同实现方法重载同名不同参数方法重写子类重写父类方法当前对象 / 父类引用final不可变static类级别抽象类不能实例化,可含抽象方法接口定义规范,支持多实现默认方法Java 8 新特性静态方法接口中也可以有常用设计模式。

qq_44758772的博客 1179

Java 语法篇【二】:面向对象彻底吃透(封装 / 继承 / 多态 / this / super)

本文深入解析Java面向对象编程的核心概念,包括封装、继承和多态的本质。文章指出面向对象的核心在于控制复杂度,而非仅关注语法层面。详细阐述了封装的实际意义、继承的适用场景与限制、多态在系统扩展中的价值,以及this/super关键字的作用机制。特别强调面向对象设计原则,如"能组合不继承"、封装的数据保护作用、多态对开闭原则的支持等。文章还对比了方法重写与重载的区别,并提醒读者注意Object类方法重写的规范。全文旨在帮助开发者从设计层面而不仅是语法层面理解Java面向对象编程。

weixin_38717458的博客 708

chapter07 面向对象编程进阶 知识点总结Note

修饰符] class 类名{属性声明;方法声明;//声明属性ageint age;//声明方法showAge()System.out.println("人吃饭");

qq_45654741的博客 1590

Java面向对象总结(java类及类的成员、面向对象的特性、关键字、抽象类与接口)

面向对象 目录面向对象一、概念1、 面向过程(POP) 与 与 象 面向对象(OOP)2、面向对象的三大特性3、POP与OOP示例4、思想概述5、理解main方法的语法二、Java类以及类的成员1、类和对象2、对象的创建及使用2.1、内存解析2.2、匿名对象3、属性3.1、变量的分类4.2、属性赋值过程4、方法4.1、概念4.2、格式4.3、方法的分类4.4、方法的调用4.5、方法的重载4.6、方法的重写4.7、可变形参的方法4.8、方法参数的值传递机制4.9、递归方法5、构造器6、四种访问权限修饰符7、子

LazyBones的博客 1746
上一篇: elementplus组件库 alert提示组件 type=“primary“无法使用 告警
下一篇: vue 子孙组件传参数,通知更新
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星空下的DeppBing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值