java oop 修饰符&关键字
一、修饰符
Java中四种访问权限修饰符:
- private
- 缺省(default)
- protected
- public
修饰类的成员,用来限定对象对该类成员的访问权限。
修饰符 类内部 同一个包 不同包的子类 同一个工程 private yes 缺省(default) yes yes protected yes yes yes public yes yes yes yes 修饰类
对于class的权限修饰符,只可以用public和default(缺省)。
- publice类可以在任意地方被访问
- default类只可以被同一个包内部的类访问
二、关键字
Java中的关键字有很多,如:
- 定义数据类型的关键字:
- byte、short、int、long、float、double、char、boolean
- class、interface、enum
- 用于定义流程控制的关键字
- if、else、switch、case、default、while、do、for
- break、continue、return
- 用于定义访问权限修饰符的关键字 【我更愿意把它归纳为修饰符,但这并不影响,看个人习惯】
- private、protected、public
今天主要讲的是OOP里面的关键字:
this关键字
在Java中,this关键字比较难理解,它的作用和其词义很相近。
- 它在方法内部使用,即这个方法所属对象的引用。
- 它在构造器内部使用,表示该构造函数正在初始化的对象。
this可以调用类的属性、方法和构造器。
什么时候使用this关键字呢?
当方法内需要用到调用该方法的对象时,就用this。具体的:我们可以用this来区分属性和局部变量。比如:
this.name=name;
super关键字
- 在Java类中使用super来调用父类中的指定操作:
- super可用于访问父类中定义的属性
- super可用于访问父类中定义的成员方法
- super可用于在子类构造器中调用父类的构造器
- 注意:
- 尤其是父类中出现同名成员时,可以用super表明调用的是父类中的成员
- super的追溯不仅限于直接父类
- super和this的用法很相像,this代表本类对象的引用,super代表父类的内存空间的标识
- 在Java类中使用super来调用父类中的指定操作:
this关键字和super关键字区别
序号 区别点 this super 1 访问属性 访问本类中的属性,如果本类没有此属性则从父类中继续查找 直接访问父类中的属性 2 调用方法 访问本类中的方法,如果本类没有此方法则从父类中继续查找 直接访问父类中的方法 3 调用构造器 调用本类构造器,必须放在构造器的首行 调用父类构造器,必须放在子类构造器的首行
static关键字
我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间中只有一份。
成员变量可分为:
- 实例变量
- 类变量
补充说明:
如果创建了一个类的多个对象,对于类中定义的非static属性,每个对象都拥有各自的一套副本,且互不干扰
如果想让一个类的所有实例共享数据,就用类变量。
使用范围:
在Java类中,可用static修饰
- 属性
- 方法
- 代码块
- 内部类
static修饰属性:类变量或者静态变量
被修饰后的成员具备以下特点:
随着类的加载而加载。可以通过“类.静态变量”的方式进行调用
优先于对象存在
修饰的成员,被所有对象所共享
访问权限允许时,可不创建对象,直接被类调用
由于类只会加载一次,则类变量在内存中也只会存在一份,存在方法区的静态域中。
开发中,如何确定一个属性是否要声明为static的?
答:属性是可以被多个对象所共享的,不会随着对象的不同而不同的。
static修饰方法:静态方法或静态方法
随着类的加载而加载。可以通过“类.静态方法”的方式进行调用
静态方法中,只能调用静态的方法或属性。非静态方法中,既可以调用非静态方法或属性,也可以调用静态的方法或属性。
在静态方法内,不能使用this、super关键字。
开发中,如何确定一个方法是否要声明为static的?
答:
1. 操作静态属性的方法,通常设置为static的
2. 工具类中的方法,习惯上声明为static的。比如:Math、Arrays等
final关键字
使用范围:
- 类
- 变量
- 方法
使用关键字final来修饰表示“最终的”
final修饰类:
final修饰的类不能被继承。提高安全性、提高程序的可读性。
如:String类、System类、StringBuffer类
final修饰方法:
final修饰的方法不能被子类重写。
如:Object类中的getClass()
final修饰变量(成员变量或局部变量)即称为常量。
- 名称大写,且只能被赋值一次
- final标记的成员变量必须在声明时或在每个构造器中或代码块中显示赋值,然后才能使用。
java oop 修饰符&关键字的更多相关文章
- Java的修饰符
转自:http://blog.csdn.net/manyizilin/article/details/51926230#L42 修饰符: 像其他语言一样,Java可以使用修饰符来修饰类中方法和属性.主 ...
- Java访问修饰符(访问控制符)
Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...
- 《Java基础知识》Java访问修饰符(访问控制符)
Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...
- Java:修饰符小记
Java:修饰符小记 对 Java 中的 修饰符,做一个微不足道的小小小小记 Java 语言提供了很多修饰符,大概分为两类: 访问权限修饰符 非访问权限修饰符 访问权限修饰符 修饰符 说明 publi ...
- java访问修饰符
了解面向对象思想的同学们,都知道"封装"这一基本特征,如何正确运用访问修饰符,恰恰能体现出封装的好坏. java访问修饰符有四个: 1)public:访问权限最高,其修饰的类.类变 ...
- JAVA类型修饰符(public,protected,private,friendly)
JAVA类型修饰符(public,protected,private,friendly) public的类.类属变量及方法.包内及包外的不论什么类均能够訪问:protected的类.类属变量及方法,包 ...
- Java类修饰符的使用与作用以及常见问题
首先明确,类是放在文件里的,在文件里面的不同位置就有不同的作用,就是不同类型的类. 1, 顶级类or外部类:包括两种,一个文件中与文件名同名称的类我们称作顶级类(也是外部类),如果在一个文件中的一个类 ...
- C#和JAVA 访问修饰符
JAVA ----------------------------------------------- 访问修饰符 描述 ------------------------------- ...
- Java static修饰符
Java static修饰符 static修饰符是静态修饰符,大家写Java第一次接触static就是主函数中的pubic static void main的声明了. 那么static有什么用?本文来 ...
随机推荐
- ldap登录验证的通用步骤
和利用数据库进行验证类似,LDAP中也是利用登陆名和密码进行验证,LDAP中会定义一个属性password,用来存放用户密码,而登陆名使用较多的都是mail地址.那怎么样才能正确的用LDAP进行身份验 ...
- 【高阶版】Python词典
使用dict.fromkeys()创建词典的一个坑 创建词典有三种方法,第一是直接赋值,d = {1:2, 2:3}:第二个是,通过构造方法,d = dict([(1, 2), (2, 3)]),第三 ...
- 题解 洛谷 P1553
字符串入门题,读入一行字符,先将第一个数读入翻转,读入下一个字符(如果没有则退出),再将下一个数读入翻转 #include<iostream> #include<cstdio> ...
- PhpStorm安装及破解流程
下载完以后,把破解的jar包放到bin目录下,更改两个.vmoptions文件 我是安装了一个破解的和汉化包 jet是破解包,resource是汉化包,然后还要修改本地主机地址 例: 0.0.0.0 ...
- JavaScript学习系列博客_32_JavaScript 包装类
包装类 - 在JS中为我们提供了三个包装类: String() Boolean() Number() - 通过这三个包装类可以创建基本数据类型的对象 例子: var num = new Number( ...
- linux 使用 FIO 测试磁盘的iops
原文链接:https://www.iteye.com/blog/elf8848-2168876 一,FIO安装wget http://brick.kernel.dk/snaps/fio-2.2.5.t ...
- 【转】在Python的struct模块中进行数据格式转换的方法
这篇文章主要介绍了在Python的struct模块中进行数据格式转换的方法,文中还给出了C语言和Python语言的数据类型比较,需要的朋友可以参考下 Python是一门非常简洁的语言,对于数据类型的表 ...
- Nuxt.js 踩坑记录,(1)引入fs包报错
今天又是码农的一天. 但是写着写着,不知道为啥就页面就报错了, 如图所示,我在db/app.js下引入了fs这个模块,提示我npm install,我也照做了,但是仍然报错. 通过各种百度,踩坑,最终 ...
- 分布式一致性算法 Paxos、Raft、Zab的区别与联系
什么是分布式系统? 拿一个最简单的例子,就比如说我们的图书管理系统.之前的系统包含了所有的功能,比如用户注册登录.管理员功能.图书借阅管理等.这叫做集中式系统.也就是一个人干了好几件事. 后来随着功能 ...
- windows环境安装vue-cli及webpack并创建vueJs项目
1. 安装node.js 2. 如果安装的是旧版本的 npm,可以通过 npm 命令来进行版本升级,命令如下: npm install npm -g npm网站服务器位于国外,所以经常下载缓慢或出现异 ...