Java SE 第二十三讲----static关键字and final关键字
1.static关键字 【在二十二讲视频中30分钟开始讲授】
2.static修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量;一个对象对该静态成员变量进行了修改,其他对象的该静态成员变量的值也会随之发生变化。如果一个成员变量是static的,那么我们可以通过类名.成员变量的方式来使用它(java推荐使用这种方式)。
package com.cl.abstracttest;
public class StaticTest {
public static void main(String[] args){
MyStatic mystatic = new MyStatic();
MyStatic mystatic2 = new MyStatic();
mystatic.a = 10;
System.out.println(mystatic2.a);
}
}
class MyStatic
{
int a;
}
结果为:0
将int a 改为 static int a 结果就变成了10
package com.cl.abstracttest;
public class StaticTest {
public static void main(String[] args){
MyStatic mystatic = new MyStatic();
MyStatic.a = 10;//直接用类名.成员变量方式
System.out.println(mystatic.a);
}
}
class MyStatic
{
static int a;
}
3.static修改方法:static修饰的方法叫做静态方法。对于静态方法来说,可以使用类名.方法名的方式来访问
package com.cl.staticandfinal;
public class StaticTest2 {
public static void main(String[] args) {
/*方法一
MyStatic2 s = new MyStatic2();
s.output();*/
//方法二
MyStatic2.output();//需要将方法变成static
}
}
class MyStatic2{
public static void output(){
System.out.println("output");
}
}
4.静态方法只能继承,不能重写(Override)。子类不能重写父类方法,可以重载父类方法
package com.cl.staticandfinal;
public class StaticTest3 {
public static void main(String[] args) {
M m = new N();
m.output();
}
}
class M
{
public static void output(){
System.out.println("M");
}
}
class N extends M
{
public static void output(){
System.out.println("N");
}
}
输出结果为:M
如果把
M m = new N();改为 N m = new N();结果就是N
5.final关键字:final可以修饰属性、方法、类。
6.final修饰类:当一个类被final所修饰时,表示该类是一个终态类,即不能被继承。
7.final修饰方法:当一个方法被final所修饰时,表示该方法是个终态方法,即不能被重写(Overried)
package com.cl.staticandfinal;
public class FinalTest2 {
public static void main(String[] args) {
H h = new H();
h.output();
}
}
class G
{
public final/*加了final修饰*/ void output(){
System.out.println("G");
}
}
class H extends G
{
public void output()//编译报错:Cannot override the final method from G
{
System.out.println("H");
}
}
8.final修饰属性:当一个属性被fina所修饰时,表示该属性不能被改写。
package com.cl.staticandfinal;
public class FinalTest3 {
public static void main(String[] args) {
People people = new People();
people.age = 20;//age这里会编译错误The final field People.age cannot be assigned
}
}
class People
{
final int age = 10;
}
9.当final修饰一个原生数据类型时,表示该原生数据类型的值不能发生变化(比如说不能从10变为20),如果final修饰一个引用类型时,表示该引用类型不能再指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。
package com.cl.staticandfinal;
public class FinalTest3 {
public static void main(String[] args) {
People people = new People();
people.address = new Address();//这里会编译错误The final field People.address cannot be assigned
people.address.name="shanghai";//这里不会报错
}
}
class People
{
final Address address = new Address();
}
class Address{
String name = "beijing";
}
10.
Java SE 第二十三讲----static关键字and final关键字的更多相关文章
- Java SE 第二十四讲----static与final使用陷阱关键字
1.对于final类型成员变量,一般来说有两种赋值方式: a)在声明final类型的成员变量时就附上初值 package com.cl.staticandfinal; public class Fin ...
- Java SE 第二十二讲----接口interface
1.接口:interface:接口的地位等同于class,接口中的所有方法都是抽象方法.在声明接口中的方法的时候,可以使用abstract关键字也可以不使用.通常情况下,都会省略掉abstract关键 ...
- Java SE 第二篇
二. Java SE 第二篇 1. Arrays 数组 // 声明一维数组,[]内不允许有值 int[] arr; int arr[]; // 创建一维数组对象,[]内必须有值 arr = new ...
- “全栈2019”Java多线程第二十九章:可重入锁与不可重入锁详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java多线程第二十八章:公平锁与非公平锁详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java多线程第二十六章:同步方法生产者与消费者线程
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java多线程第二十五章:生产者与消费者线程详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java多线程第二十四章:等待唤醒机制详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java多线程第二十二章:饥饿线程(Starvation)详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
随机推荐
- 05-Java 集合类详解
(1)Java集合-Collection A.集合可以理解为一个动态的对象数组,不同的是集合中的对象内容可以任意扩充 B.集合特点:性能高,容易扩展和修改 C.Collection的常用子类:List ...
- android 添加依赖的库文件
Notpad: 2016-3-16: 1.android 添加依赖的库文件 右键自己的项目 -> properties ->android ->在Library处点击add -> ...
- flex html 用flex展示html
1. 目的 flex展示html 可以保护网页内容 2. 参考 http://stackoverflow.com/questions/260270/display-html-in-an-actions ...
- XSS转码 && struts2 property标签的bug
struts2: <s:property value="name" escape="false"/> EL表达式: jsp 2.0中的 ${todo ...
- PERCENT_RANK
1. percent_rank() over (order by .....) 返回某列或某列组合后每行的百分比排序 如下: with cte as( SELECT ROWNUM as n FRO ...
- UCloud内核热补丁技术揭秘
- php返回状态200或者300的写法
header("HTTP/1.0 200 OK"); phpinfo(); header("HTTP/1.0 300 OK"); phpinfo();
- thinkphp在为图片添加png水印不足的处理
thinkphp在为图片加水印的时候.如果水印图片是png图片,透明度处理很不理想,与是做以下处理 在Image.class.php中新增 static function imagecopymerge ...
- 装过photoshop后出现configuration error
1.你用的应该是精简版的PS,找到ps启动图标,点击右键,以管理员身份运行试试. 2.可以右键你的快捷方式,选择兼容性,后面有个选框“以管理员身份运行”,应用,下次就不报错了.
- android学习笔记40——国际化和资源自适应
国际化——Internationalization,简称I18N. 本地化——Localization,检查L10N. java国际化资源的思路: java提供国际化资源的思路,是将程序中的标签.提示 ...