JavaSE基础知识(5)—面向对象(5.5 this和super关键字)
一、this关键字
1、说明
this关键字代表当前类的对象,可以访问本类的属性、方法、构造器
注意:谁调用该方法,则this就指谁
2、语法
访问属性:
this.属性名 = 值;
System.out.println(this.属性名);
访问方法:
this.方法名();
访问构造器:
this([参数列表]);
3、注意事项
一般来讲如果本类内部访问当前类的成员,则直接访问即可,默认也是通过this调用的。
当局部变量和成员变量重名时,则必须通过this才能调用到成员变量!
二、super关键字
1、说明
super代表了在子类中获取到的父类的引用,可以访问父类的属性、方法、构造器
2、语法
super.属性名 = 值;
super.方法名(参数列表);
super(参数列表);只能放在构造器的第一句
3、注意事项
①当子类成员和父类成员重名时,在子类中,默认访问的是本类的成员,如果需要访问父类的成员,则需要通过super访问
②当父类没有无参构造器时,子类必须通过super显式调用父类的有参构造器
4、特点
①super先去访问直接父类的成员,如果没有将一直往上追溯,直到Object类
②如果父类和上层的间接父类都有某同名成员,访问时遵循就近原则
三、this和super对比
| 说明 | 访问属性或方法 | 访问构造器 | |
| this | 当前类的对象 |
先去找本类中是否有该成员,如果有,直接访问, 如果没有继续向找父类,直到找到 |
this(参数列表); 只能放在构造器的第一句,用于访问本类的构造器 |
| super | 父类的引用 |
先去找直接父类是否有该成员,如果有,直接访问, 如果没有继续向上找其他父类,直到找到 |
super(参数列表); 只能放在构造器的第一句,用于访问父类的构造器 |
JavaSE基础知识(5)—面向对象(5.5 this和super关键字)的更多相关文章
- JavaSE基础知识总结
最近回顾了一下Java的基础知识,决定写成博客梳理一遍,主要是JavaSE部分最基础的知识,适合考前突击,学后回顾,不适合作为初学材料. 简单的列个目录吧: 一.数据类型和运算符 二.流程控制与数组 ...
- C#基础知识之面向对象以及面向对象的三大特性
在C#基础知识之类和结构体中我详细记录了类.类成员.重载.重写.继承等知识总结.这里就记录一下对面向对象和面向对象三大特性的广义理解. 一.理解面向对象 类是面向对象编程的基本单元,面向对象思想其实就 ...
- javascript的基础知识及面向对象和原型属性
自己总结一下javascript的基础知识,希望对大家有用,也希望大家来拍砖,毕竟是个人的理解啊 1.1 类型检查:typeof(验证数据类型是:string) var num = 123; cons ...
- JAVA基础知识之面向对象编程知识汇总
JAVA基础课程部分面向对象已经学习完成,知识结构如下: 总体知识框架: 类的结构: 面向对象编程三大特征: 关键字和抽象类接口等: 常见知识汇总: 成员变量和局部变量比较 有无返回值方法比较: 权限 ...
- JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- 面向对象编程(十)——继承之Super关键字及内存分析
Super关键字
- JavaSE基础知识(5)—面向对象(5.4面向对象三大特征:封装、继承、多态)
面向对象编程具有三大特征: 封装 继承 多态 一.封装 1.好处 狭义的封装:也就是属性的封装,避免了任意赋值的危险,提高了数据的安全性! ①隐藏一个类中不需要对外提供的实现细节 ②使用者只能通过实现 ...
- JavaSE基础知识(5)—面向对象(5.1类和对象概念、创建及内存分配)
一.类和对象的相关概念 1.面向对象和面向过程的理解 面向对象和面向过程都属于解决问题的思考方式.面向过程:以执行者的角度思考问题,侧重于“怎么做”,比较适合解决小型项目面向对象:以指挥者的角度思考问 ...
- JavaSE基础知识(5)—面向对象(抽象类和接口)
一.抽象类 1.理解 用abstract关键字定义的类,称为抽象类用abstract关键字定义的方法,称为抽象方法意义:当设计父类时,发现该父类根本不需要创建对象,并且里面有不好描述的方法.这个时候往 ...
- JavaSE基础知识(5)—面向对象(Object类)
一.包 java.lang包,属于java中的核心包,系统默认导入的,不用手动导入该包中的类:Object.System.String.Integer等 1.包的好处 ①分类管理java文件,查找和管 ...
随机推荐
- AJAX注册
注册的时候,编号自动生成,需要在数据库查询出当前的最大编号是多少,然后在此基础上+1//绑定编号 $.ajax({ url: "ajax/returnUcode.ashx", da ...
- python-web自动化-文件上传操作(非input标签的上传,需要借助第三方工具)
文件上传操作 一.文件上传分两种情况:1. 如果是input可以直接输入路径的,可以直接调send_keys输入路径 2. 非input标签的上传,需要借助第三方工具: 2.1 Autolt 需 ...
- 如何实现 C/C++ 与 Python 的通信?
属于混合编程的问题.较全面的介绍一下,不仅限于题主提出的问题.以下讨论中,Python指它的标准实现,即CPython(虽然不是很严格) 本文分4个部分 1. C/C++ 调用 Python (基础篇 ...
- Robot Framework 自动化框架大纲
Python + Robot Framework 环境搭建 Android SDK + Appium 环境搭建 RobotFramework - AppiumLibrary 之元素定位 RobotFr ...
- 使用Webupload上传图片到FastDFS分布式文件系统
使用Webupload插件上传图片到FastDFS分布式文件系统. 前提条件:1.已安装FastDFS分布式文件系统 2.使用webuploader插件上传文件 3.maven工程已引入FastDFS ...
- orcal - 添加用户、授权
create user jy2 identified by jy2; grant dba to jy2;
- nginx内容
nginx工作在7层:web server(静态内容 static contents)web reverse proxy(反向代理http,https,mail),cache(带缓存功能) proxy ...
- C++重写new和delete,比想像中困难
关于C++内存管理这话题,永远都不过时.在我刚出道的时候,就已经在考虑怎么检测内存泄漏(https://www.cnblogs.com/coding-my-life/p/3985164.html).想 ...
- Unable to find a single main class from the following candidates ,显示有两个main class
由于基础框架是用的网上down的源码,我将项目名字改了,估计没有进行maven clean,本地调试的时候没有问题. 当发布时候,执行maven install 一直提示上述错误. 解决办法:1.ma ...
- Linux 操作命令
1. Linux 概述1.1. 内核版本 从技术角度来讲, Linux只是一个系统内核,一个内核并不是一套完整的操作系统.一套完整的操作系统应该包括内核. GNU应用程序库和工具.图形桌面环境等 ...