final关键字、static关键字

final关键字

继承带来了好处,同时也会有弊端出现,比如有的时候我们不需要继承某些类或者类中成员的时候,就可以用到final的修饰了,它可以修饰类,成员变量,成员方法,以及局部变量。final的意思就是最终的意思,被他修饰的成员变量会变成一个不能改变值的常量,被他修饰的成员方法不能被子类所重写,被它修饰的类不能被继承。

final的特点:

1、 被final修饰的类,不能被其它的类继承,也就是说它是一个最终类,但是这个类可以继承其他类。

2、 被final修饰的方法,不能被其子类所重写,可以被子类所继承。

3、 被final修饰的局部变量,终生不能被改变。

4、 被final修饰的成员变量,只能赋值一次。

static关键字

需要实现对象的共享数据时,需要在数据前面加上static 修饰。也就是说姓名和年龄是一个人特有的数据,那么这个人的国籍就是共有的数据国籍前面就要加static修饰。下面用一段代码来演示:

? Person类

package cn.itcast.Static关键字01;
/*
 * 被static修饰的成员变量和不被修饰的成员变量的区别演示
 */
public class Person {
//共有属性姓名
String name;
//共享属性国籍
static String country;
}

? Test测试类

package cn.itcast.Static关键字01;
public class Test {
public static void main(String[] args) {
//创建Person对象,调用共有属性和共享属性看他的运行结果
Person p1 = new Person();
Person p2 = new Person();
p1.name = "李四";
p2.name = "王五";
System.out.println(p1.name);
System.out.println(p2.name);
//static修饰的共享属性
p1.country = "中国";
System.out.println(p1.country);
System.out.println(p2.country);
//static修饰的属性可以用类名直接调用
System.out.println(Person.country);
}
}

运行结果: 

静态的注意事项:静态成员不能调用非静态成员,因为静态成员是优先于对象存在的,调用的非静态成员是创建对象后才存在的。

多态调用中,编译看谁,运行看谁?

1、编译都看等号左边的父类

2、运行,静态方法,运行静态中的静态方法

3、运行,非静态方法,运行子类中的重写方法

4、成员变量,编译运行全是父类。

定义静态常量的格式:public static final 数据类型 变量名 = 值;

注意:定义final常量它的变量名全部大写,两个单词之间用下划线连接。

原文地址:http://blog.51cto.com/13502869/2062186

时间: 2024-11-05 16:06:54

final关键字、static关键字的相关文章

Java中final和static关键字总结

1.final: final关键字可用于类.方法.变量前. final修饰的类不可被继承,例如java.lang.Math就是一个 final类,不可被继承. final修饰变量,在显示初始化后不可改变变量值,用于常量定义.如果final变量是引用变量,则不可以改变它的引用对象,但可以改变对象的数据(属性). final修饰的方法不可被重写. 错误案例) package com.sp; public final class Fish {        final String name = "鱼

第九天(上) final和static关键字

继承的出现提高了代码的复用性,方便开发,是多态的前提,但随之而来的也有问题,有些累在描述后不想被继承,或者里面的方法功能时固定的,不想让子类重写,可子类继承之后又可以重写该怎么办呢 这个时候就需要一个关键字final  意为 最终的 不可变的 Final是一个比较强的修饰符,可以用来修饰类,类的成员,以及方法 Final修饰类 在类的前面加上final Final类不可以被继承,但可以继承其他类,是个太监.其成员方法也默认为final的,但成员变量是可以改变的 在使用final修饰类的时候,要注

this,final super,static关键字

this关键字 this调用构造方法: 在之前学习方法之间调用时,可以通过方法名进行调用.可是针对构造方法,无法通过构造方法名来相互调用. 构造方法之间的调用,可以通过this关键字来完成. |------构造方法调用格式: this(参数列表); |------构造方法的调用: package com.oracle.demo01; public class student { private String name; private int age; public student(){ //t

Java final、static 关键字

问:谈谈 Java 中 final.finally.finalize 的区别?   答:这道题其实没有任何意义,无非就是考察开发者有没有区分这几个关键字的含义,仅仅关联是因为长得像而已. final 是一个修饰符,如果一个类被声明为 final 则其不能再派生出新的子类,所以一个类不能既被声明为 abstract 又被声明为 final 的:将变量或方法声明为 final 可以保证它们在使用中不被改变(对于对象变量来说其引用不可变,即不能再指向其他的对象,但是对象的值可变),被声明为 final

final与static关键字的区别?(skycto JEEditor)

都可以修饰类.方法.成员变量. static可以修饰类的代码块,final不可以.static不可以修饰方法内的局部变量,final可以. static修饰表示静态或全局,被修饰的属性和方法属于类,可以用类名.静态属性 / 方法名 访问static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块,只会被执行一次static修饰的属性,也就是类变量,是在类加载时被创建并进行初始化,只会被创建一次static修饰的变量可以重新赋值static方法中不能用this和su

Java基础之final、static关键字

一.前言 关于这两个关键字,应该是在开发工作中比较常见的,使用频率上来说也比较高.接口中.常量.静态方法等等.但是,使用频繁却不代表一定是能够清晰明白的了解,能说出个子丑演卯来.下面,对这两个关键字的常见用法做点总结记录,方便之后的回顾以及突击知识点. 二.关键字 final final,一如字面意思 “最终的”,大体在 Java 中表示 “不可变的”.可用来修饰类.方法.方法参数以及变量. 1.修饰类 final 在修饰类的时候,代表的是此类不能被继承.也就是说如果一个类确定不会被继承使用,则

final、static关键字

Final 定义  在实际开发中,有些方法不能直接覆盖掉,不想让子类重写父类的方法,那么就引出final关键字(可以修饰类,变量,成员方法). 基本用法 final可以修饰类,但是该类不能被继承,但可以继承其他类. final可以修饰变量(成员变量,局部变量),(两种方法:一直接赋值,二用构造方法)但是该变量此时变成了一个常量. final可以修饰成员方法,但是该方法不能被重写,但可以被继承. final 修饰局部变量时,可以先定义使用时再赋值. final 不能修饰接口.抽象类.抽象方法. f

Java基础之final和static关键字

一.final        根据程序上下文环境,它可以修饰非抽象类.非抽象类成员方法和变量. final类不能被继承,没有子类,final类中的方法默认是final的.        final方法不能被子类的方法覆盖,但可以被继承.        final成员变量表示常量,只能被赋值一次,赋值后值不再改变.        final不能用于修饰构造方法.        注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的. 1.fin

final和static关键字的个人认识

final fianl关键字可以修饰类.方法和变量. a. 修饰类 final修饰的类,该类没有子类,该类不能被继承. b. 修饰方法 final可以修饰方法.final修饰的方法不能被重写. c. 修饰变量 final修饰的变量,是一个常量,且只能被赋值 一次,可以是成员变量和局部变量. static a. static用于修饰成员,可以是成员变量和成员方法. b. 被static修饰后的成员,可以直接被类调用. 类名.静态成员 c. 随着类的加载而加载,随着类的消失而消失.类一加载,就有静态

java 中final和static关键字说明

final fianl关键字可以修饰类.方法和变量. a. 修饰类 final修饰的类,该类没有子类,该类不能被继承. b. 修饰方法 final可以修饰方法.final修饰的方法不能被重写. c. 修饰变量 final修饰的变量,是一个常量,且只能被赋值 一次,可以是成员变量和局部变量. static a. static用于修饰成员,可以是成员变量和成员方法. b. 被static修饰后的成员,可以直接被类调用. 类名.静态成员 c. 随着类的加载而加载,随着类的消失而消失.类一加载,就有静态