java中的this、super、static、final、abstract关键字的作用
this关键字的作用
1、this是对象内部指代自身的引用,同时也是解决成员变量和局部变量同名问题;
2、this可以调用成员变量,不能调用局部变量;
3、this也可以调用成员方法,但在普通方法中可以省略this,在构造方法中不允许省略,必须是构造方法的第一条语句。而且在静态方法中不允许出现this关键字。
super关键字的作用
1、super代表对当前对象的直接父类对象的引用;
2、super可以调用直接父类的成员变量(注意权限修饰符的影响,比如不能访问private成员);
3、super可以调用直接父类的构造方法,只限构造方法中欧使用,且必须是第一条语句。
static关键字的作用
staic是java中的一个关键字,单词本身是静态的意思
使用static修饰的成员成为静态成员,是属于某个类的;而不使用static修饰的成员称为实例成员,是属于类的每个对象的。
一个类的成员包括变量、方法、构造方法、代码块、和内部类,static可以修饰除了构造方法以外的所有成员
1、static修饰变量
static属性属于这个类所有,即由该类创建的所有对象共享一个satic属性。static变量和非static变量都是成员变量,这是共同点,区别主要有:
1)在内存中份数不同
不管有多少个对象,static变量只有一份。对于每个对象,实例变量都会有单独一份
非static变量好比水杯,一个人一个;static变量好比饮水机,大家共享
2)在内存中存放的位置不同
静态变量存在方法区中,实例变量存在堆内存中
3)访问的方式不同
实例变量:对象名.变量名
静态变量:对象名.变量名,不推荐如此使用;类名.变量名,推荐使用
4)在内存中分配空间的时间不同
实例变量:创建对象的时候才分配了空间
静态变量:第一次加载类的时候
2.static修饰方法
可以通过对象名.方法名和类名.方法名两种方式来访问
3.satic修饰代码块
当类被第一次加载时(可能是调用static属性和方法,或者创建其对象)执行静态代码块,且只被执行一次,主要作用是实现static属性的初始化
4.static修饰内部类
属于整个外部类,而不是属于外部类的每个对象。不能访问外部类的非静态成员(变量或者方法),可以访问外部类的静态成员
5.静态导入
import static java.lang.Math.*;非导入类和接口,而是导入类和接口的静态成员
abstract关键字的作用
1、abstract可以用来修饰类和方法,不能用来修饰属性和构造方法;
2、使用abstract可以用来修饰的类是抽象类,需要被继承;
3、使用abstract修饰的方法是抽象方法,需要被子类重写
final关键字的作用
1、final可以用来修饰类、方法和属性,不能修饰构造方法。
2、使用final修饰的类不能被继承,使用final修饰的方法不能被重写,
3、使用final修饰的变量的值不能被修改,所以就成了常量。
特别注意:final修饰基本类型变量,其值不能改变,由原来的变量变为常量;但是final修饰引用类型变量,栈内存中的引用不能改变,但是所指向的堆内存中的对象的属性值仍旧可以改变
class Test {
public static void main(String[] args) {
final Dog dog = new Dog("小黄");
dog.name = "大黄";//正确
dog = new Dog("黄黄");//错误
}
}
java中的this、super、static、final、abstract关键字的作用的更多相关文章
- 浅析java修饰符之public default protected private static final abstract
浅析java修饰符之public default protected private static final abstract 一 修饰符的作用:用来定义类.方法或者变量,通常放在语句的最前端 ...
- Java中this与super的区别【6】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激.请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing/ ...
- JAVA中this和super用法
参考网上资料和自行理解总结java中this和super中各自用法及其差异 <一>. this的用法 构造方法是创建java对象的重要途径,通过new关键字调用构造器时,构造器返回该类的对 ...
- final和abstract关键字的作用
final和abstract关键字的作用 final和abstract是功能相反的两个关键字,可以对比记忆 abstract可以用来修饰类和方法,不能用来修饰属性和构造方法:使用abstract修饰的 ...
- Java并发编程学习笔记 深入理解volatile关键字的作用
引言:以前只是看过介绍volatile的文章,对其的理解也只是停留在理论的层面上,由于最近在项目当中用到了关于并发方面的技术,所以下定决心深入研究一下java并发方面的知识.网上关于volatile的 ...
- java笔记之static&final&abstract
知识需要不断回顾和重新认识 一:static static类型变量初始值只能被赋值一次,它的整个生命周期是源程序,程序结束前变量都不会被释放. 例如: for(int i = 0; i<10; ...
- Java中public,private,final,static等概念的解读
作为刚入门Java的小白,对于public,private,final,static等概念总是搞不清楚,到底都代表着什么,这里做一个简单的梳理,和大家分享,若有错误请指正,谢谢~ 访问权限修饰符 pu ...
- [转] Java中public,private,final,static等概念的解读
作为刚入门Java的小白,对于public,private,final,static等概念总是搞不清楚,到底都代表着什么,这里做一个简单的梳理,和大家分享,若有错误请指正,谢谢~ 访问权限修饰符 pu ...
- this/super/static/final/匿名对象/继承/抽象类/访问权限修饰符
1.this关键字的作用 1)调用本类中的属性; 2)调用本类中的构造方法;且只能放首行,且必须留一个构造方法作为出口,即不能递归调用 3)表示当前对象; 2.匿名对象 ...
随机推荐
- 【Canvas】311- 解决 canvas 在高清屏中绘制模糊的问题
点击上方"前端自习课"关注,学习起来~ 一.问题分析 使用 canvas 绘制图片或者是文字在 Retina 屏中会非常模糊.如图: 因为 canvas 不是矢量图,而是像图片一样 ...
- Java构造器浅析
Java构造器 问题引出 1.先看一段简单创建对象的例子: public class constructTest { public static void main(String[] args) { ...
- 使用python实现数组、链表、队列、栈
引言 什么是数据结构? 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成. 简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中. 比如:列表,集合和字 ...
- hdu 1054 Strategic Game (简单树形DP)
Strategic Game Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- oracle创建索引
数据库索引是为了提高查询速度的一种数据结构. 索引的创建语句 索引的创建语句非常简单. CREATE INDEX 索引名 ON 表名(列名); 除了单列索引,还可以创建包含多个列的复合索引. CREA ...
- Spire.Cloud 在线编辑
简介 Spire.Cloud在线编辑器是一款基于网页的 Office 文件编辑工具,支持在网页中打开.编辑.打印 Word.Excel.PPT 文件,支持将文档保存到私有云盘.支持 IE.Chrome ...
- C# 控制台输入和输出
目录 从控制台获取输入 将输出写入控制台 Console.Write() Console.WriteLine() 格式字符串 多重标记和值 格式化字符串 索引 对齐说明符 格式字段 标准数字格式说明符 ...
- Nginx配置实例-负载均衡实例:平均访问多台服务器
场景 Nginx配置实例-反向代理实例:根据访问的路径跳转到不同端口的服务中: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- iOS Privacy Policy
This application respects and protects the privacy of all users who use the service. In order to pro ...
- 软件开发工具(第11章:Eclipse CDT开发常用功能)
一.自定义编辑器 C/C++首选项设置(重点.记忆.应用) 单击菜单栏中的窗口(Window)菜单, 选择首选项(Preferences)选项,在 弹出的对话框左侧部分,展开C/C++树 形菜单. 外 ...