java基础(14)---修饰符
修饰符:final 、static、public、protected、private、default。
一、final(不能修改)

使用final修饰变量定义:该变量一旦被初始化之后就不允许再被修改。
final修饰引用类型:一旦为其赋值,将不能够重新用来引用另一个对象,不过可以修改其引用对象的成员 变量。
final修饰成员变量:其值不能改变,必须进行初始化。
public class YourClassNameHere {
final String color; // 如果后面没有在构造函数中初始化,则错误。
final String color1 = "红色"; //正确,进行显示初始化
String color2 = "蓝色";
public YourClassNameHere(String color){
this.color = color;
}
public static void main(String[] args) {
String color = "黄色";
YourClassNameHere test = new YourClassNameHere(color);
System.out.println(test.color);
String color1 = "绿色";
YourClassNameHere test1 = new YourClassNameHere(color1);
System.out.println(test1.color);
System.out.println(test1.color1);
// test1.color = "改变颜色"; //错误,不能修改final变量
test1.color2 = "改变颜色2";
System.out.println(test1.color2);
}
}
final修饰的局部变量:
final修饰局部变量可以只声明不初始化,但是被修饰的局部变量一旦被赋值后就不能进行修改了。如果在创建时没有对其赋值,那么在使用前还是可以对其赋值的。
final修饰的方法:
被修饰的方法能被该类的子类所继承,但不能重写,这样保护了父类某些特殊的数据。
//重写父类方法,但没有用final修饰
class bike
{
String color = "黄色"; public void getMes()
{
System.out.println("父类的成员变量color" + color);
}
}
public class test extends bike
{
String color = "绿色"; //重写父类方法
public void getMes()
{
System.out.println("子类的成员变量color" + color);
}
public static void main(String[] args)
{
test t = new test();
t.getMes(); }
}
//重写父类方法,用final修饰
class bike
{
String color = "黄色"; public final void getMes()
{
System.out.println("父类的成员变量color" + color);
}
}
public class test extends bike
{
String color = "绿色"; //不能重写父类方法
/*
public void getMes()
{
System.out.println("子类的成员变量color" + color);
}
*/
public static void main(String[] args)
{
test t = new test();
t.getMes(); }
}
final修饰类:说明该类不能有子类,即该类不能被继承,该类的成员变量在这里不起作用。
final修饰类里的方法默认被修饰为final。
二、static(只能存一份)
静态:在内存中只能有一份。
静态变量:只能存在一份,它属于类,不属于对象,不随着对象的创建而建立副本。如果不想在创建对象的时候就需要知道一些相关信息,那么就声明为static类型。
public class test
{
static String color = "绿色"; public test(String color)
{
this color += color;
} public static void main(String[] args)
{
test t1 = new test("黄色");
test t2 = new test("红色"); System.out.println(t1.color); // 绿色黄色红色
System.out.println(t2.color); //绿色黄色红色
System.out.println(color); //绿色黄色红色
}
}
静态变量的访问:
- 类名.静态成员变量名称
- 静态成员变量名称
三、静态常量 static final
静态常量:唯一的、不可变的、只存在一份的数据。系统不会分配默认值,必须初始化。
- static:属于类,随着类的创建而创建。
- final:值不能改变。
- static和final没有先后之分。
四、public、private、default、protected
public:声明被它修饰的成员变量为公共类型,这个成员变量在任何包里都能访问,包括子类也能访问到。
private:除了本类外任何类都不能访问到这个成员变量,具有很好的保护性。
default:如果不给成员变量添加任何修饰符,就表示这个成员变量被修饰为default类型。在同一个包里的类或子类是能够访问的,相当于public类型。但是在不同包里的类或子类没有继承该成员变量,是访问不到它的。
如果子类在另一个包里,而成员变量或方法没有添加修饰符,子类是访问不到的。
protected:在同一个包里和public类型是一样的,可访问到。如果在不同包里的protected类型的成员变量就只能通过子类来访问。子类可以访问父类protected权限的成员是指集成到子类中后在子类是可见的,而非子类内部建立一个父类的实例后该实例可以访问自身的protected成员。
五、abstract抽象
与final含义完全相反。抽象类里最少要含有一个抽象方法,让子类去实现这个抽象方法
java基础(14)---修饰符的更多相关文章
- java基础之修饰符和内部类
1.java修饰符 /* 修饰符: 权限修饰符:private,默认的,protected,public 状态修饰符:static,final 抽象修饰符:abstract 类: 权限修饰符:默认修饰 ...
- Java基础-访问修饰符
访问修饰符 default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符.使用对象:类.接口.变量.方法. private : 在同一类内可见.使用对象:变量.方法. 注意:不能修饰类( ...
- JAVA基础_修饰符
引言:Java的修饰符根据修饰的对象不同,分为类修饰符.方法修饰符.变量修饰符,其中每种修饰符又分为访问控制修饰符和非访问控制修饰符.访问控制存在的原因:a.让客户端程序员无法触及他们不应该触及的部分 ...
- java基础之 修饰符
一.访问修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. 1.default (即缺省,什么也不写): 在同一包内可见,不使用任何修 ...
- Java 基础 面向对象修饰符和自定义数据类型
不同修饰符使用细节 常用来修饰类.方法.变量的修饰符如下: public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是 ...
- 4. java基础之修饰符
其他修饰符 public 可以修饰属性.方法.构造方法.类 protected 可以修饰属性.方法.构造方法 default 可以修饰属性.方法.构造方法.类 private 可以修饰属性.方法.构造 ...
- java中的修饰符和基本数据类型
1.java中的修饰符 java中的修饰符主要是用来对类资源进行一个权限控制,上面表格表现的很清晰,无需多言. 2.java中的基本数据类型 java中的数据类型分为引用类型和基本类型.基本数据类型有 ...
- Java中的 修饰符
java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符 访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共 ...
- 深入理解Java的protected修饰符
其实Java的protected修饰符,权限定义的很微妙,大致有以下几种: (1)protected控制符用于修饰方法和成员变量: (2)一个类的protected方法或成员变量,在包外是不能通过该类 ...
- java访问权限修饰符
作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × ja ...
随机推荐
- 阿里云composer 镜像
2019年12月2日13:54:32 https://developer.aliyun.com/composer 阿里云的镜像更新时间比较及时 本镜像与 Packagist 官方实时同步,推荐使用最新 ...
- Zabbix主动模式与被动模式的区别——最简单的解释
一直搞不清楚Zabbix的主动模式和被动模式的差别,网上看到别人博客里的解释都是云里雾里的,完全搞不清.知道偶然看到了以下这个解释.就基本上明白了. Zabbix的主动模式和被动模式都是相对agent ...
- c# .net framework 4.5.2 , Quartz.NET 3.0.7
参考了:https://www.cnblogs.com/personblog/p/11277527.html, https://www.jianshu.com/p/b8e7e4deb60a .NET ...
- c++动态链接问题
https://blog.csdn.net/liu0808/article/details/81169173 https://blog.csdn.net/f110300641/article/deta ...
- Java生成二进制文件与Postman以二进制流的形式发送请求
业务描述: 模拟终端(智能家居)发送HTTP POST请求,请求参数为二进制流:而且,二进制流是加密后的数据,因此调试分两步: 1.Java代码生成加密后数据,并保存为二进制流文件 (电脑上的图片就是 ...
- LeetCode 921. 使括号有效的最少添加(Minimum Add to Make Parentheses Valid) 48
921. 使括号有效的最少添加 921. Minimum Add to Make Parentheses Valid 题目描述 给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的 ...
- LeetCode 5216. 统计元音字母序列的数目(Java)DP
5216. 统计元音字母序列的数目 给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串: 字符串中的每个字符都应当是小写元音字母('a', 'e', 'i', 'o', ...
- 国内P2P网贷行业再次大清理,仅剩646家
最近有网贷行业头部网站流出消息,国内网贷行业再次迎来大洗牌 清扫之后网贷的平台数量仅剩646家,数量陡降 根据小编了解.自2007年国外网络借贷平台模式引入中国以来,由于国家一时没有做出相应规定个条例 ...
- Oracle学习笔记(四)
Oracle中的体系结构: oracle体系结构中的进程: 共享池相关的优化: drop table t purge; create table t as select * from dba_obje ...
- Spring-Cloud之Zuul路由网关-6
一.为什么需要Zuul? Zuul 作为微服务系统的网关组件,用于构建边界服务( Edge Service ),致力于动态路由.过滤.监控.弹性伸缩和安全.Zuul 作为路由网关组件,在微服务架构中有 ...