`
baochunyu
  • 浏览: 8633 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java中的关键字static、this、super、final

    博客分类:
  • java
 
阅读更多

引发对java关键字的再学习是在项目组遇到的一个问题导致的,通过不同的容器weblogic、ejb访问类中的同一static方法,得出的结果不一样,致使程序运行时产生重大灾难!(本文多处为别处摘录)

一、static

1、static 修饰成员字段

当类被虚拟机加载时,首先按照字段声明的先后顺序对static成员字段进行初始化

2、static 修饰成员函数

该成员函数不能使用this对象

static不能修饰构造函数

static不能修饰函数参数

static不能修饰局部成员变量

3、static 修饰语句块

当类被虚拟机加载时,按照声明顺序先后初始化static成员字段和static语句块

static所修饰的方法和字段是只属于类,所有对象共享

在static所修饰的函数和语句块中不能使用非static成员字段

 

二、final

1、final 修饰类

表示该类不可被继承

final不可修饰interface接口与abstract类

2、final 修饰方法

表示该方法不可被子类覆盖(即子类不可重写父类的final方法,但可以被继承)

final不可修饰构造函数

3、final 修饰成员属性

表示属性值第一次初始化后不可被修改

final属性可以直接初始化或在构造函数中初始化,如果是直接初始化则其值不可在其他函数中(包括构造函数)修改

4、final 修饰函数参数

参数值不能被函数修改

5、final 修饰函数中的局部变量

局部变量第一次初始化后不可改变其值

使用final的意义

第一、为方法"上锁",防止任何继承类改变它的本来含义和实现。设计程序时,若希望一个方法的行为在继承期间保持不变,而且不可被覆盖或改写,就可以采用这种做法。

第二、提高程序执行的效率,将一个方法设成final后,编译器就可以把对那个方法的所有调用都置入"嵌入"调用里(内嵌机制)。


在java中定义全局变量是通过static来实现的,常量是通过static final来实现

 

三、this&&super

this通常指代当前对象,super指代父类

 

下面给出不完整的示例

public class Father {
	//public static int age = 32; static成员和static块加载顺序为声明先后
	static{
		System.out.println("father的静态块init");
		//name="卫庄"; error
		age = 30;
		//this.age=30; error
	}
	
	public Father(){
		this.name = "卫庄";
		height=180;
		//weight = 160; error
		System.out.println("father的构造函数初始化");
	}
	
	public String name;
	public static int age;
	public static final String sex = "男";
	public final int height;
	public final int weight=150;
	
	public void run(){
		//static int i = 1; error
		System.out.println("father run");
	}
	
	public final void sleep(){
		System.out.println("father sleep");
	}
	
	public static void eat(){
		int i = 1;
		final int a = 3;
		//a = 4 ; error 
		//this.name = "father"; error
		//name = "father"; error
		age = 32;
		System.out.println("father eat");
		System.out.println(age);
	}
	
}

 

public final class Son extends Father{
	static{
		System.out.println("son的静态块init");
		age = 13;
	}
	
	public Son(){
		super();
		name = "盖聂";
		System.out.println("son的构造函数初始化");
	}
	
	public void run(){
		System.out.println("son run");
	}
	
	public static void eat(){
		System.out.println("son eat");
	}
	
	/* error
	 * public void sleep(){
		System.out.println("son sleep");
	}*/
	
	public static void main(String []args){
		Father f = new Son();
		System.out.println(Father.age);
		System.out.println(Son.age);
		System.out.println(f.name);
		System.out.println(f.height);
		Father.eat();
		f.sleep();
		f.run();
		f.eat();
	}
}
 
分享到:
评论

相关推荐

    static、this、super、final的JAVA用法

    Java 中 static、this、super、final 的用法 静态方法(static method)是一种特殊的方法,它可以在不需要创建...static、this、super、final 是 Java 中四个非常重要的关键字,了解它们的用法是 Java 编程的基础。

    Java中static、this、super、final用法

    在Java编程语言中,`static`, `this`, `super`, 和 `final` 是四个非常重要的关键字,它们分别代表不同的概念并具有特殊的用法。 一、`static` `static` 关键字用于声明类级别的成员(变量或方法),这意味着它们...

    Java中的static关键字

    Java 中的 static 关键字 Java 中的 static 关键字是用于声明类的成员变量和成员方法的,它可以使得变量和方法属于类本身,而不属于某个对象。静态变量也称为类变量,静态方法也称为类方法。静态变量和静态方法可以...

    Java中static、this、super、final用法简谈

    Java中的`static`、`this`、`super`和`final`是四个非常重要的关键字,它们在编程中扮演着至关重要的角色。这篇文章将简要介绍这些关键字的基本用法及其应用场景。 1. **static** `static`关键字用于声明类级别的...

    Java中static、this、super、final用法.doc

    在Java编程语言中,`static`、`this`、`super`和`final`是四个非常重要的关键字,它们各自有着特定的用途和含义。 1. **static**: 静态关键字`static`用于声明类级别的变量和方法,即静态变量和静态方法。静态变量...

    Java中static、this、super、final用法.docx

    "Java 中 static、this、super、final 用法详解" ...Java 中的 static、this、super、final 关键字都是非常重要的,它们用于定义静态变量和静态方法,指代当前对象,访问父类的成员,和定义不可变的变量和方法。

    Java开发中static.this.super.final用法

    Java开发中的`static`, `this`, `super`, 和 `final`是四个非常重要的关键字,它们在编程中扮演着各自独特的角色。接下来我们将深入探讨这些关键字的用法。 1. **static**: - **静态方法**:如示例中所示,`static...

    JAVA\Java开发中static、this、super和final用法

    在Java编程中,`static`、`this`、`super`和`final`是四个非常重要的关键字,它们各自有着特定的用途和含义。 1. **static关键字**: - `static`关键字主要用于声明静态成员(静态变量和静态方法)。静态成员属于...

    Java this、final等关键字总结

    Java中的关键字this、final以及super在编程中扮演着至关重要的角色。下面我们将深入探讨这些关键字的用法和意义。 首先,`this`关键字是Java中一个非常基础且实用的元素,它代表当前对象的引用。当类的成员变量与...

    Java中static、this、super、final用途

    Java中的`static`、`this`、`super`和`final`是四个非常重要的关键字,它们在编程中扮演着不同的角色。以下是对这些概念的详细解释: ### 1. `static` `static`关键字用于声明类级别的成员,包括静态方法和静态...

    Java中static、this、super、final用途用法及实例.docx

    ### Java中static、this、super、...通过上述详细介绍,我们可以看出`static`、`this`、`super`和`final`关键字在Java编程中扮演着重要的角色,正确地理解和使用这些关键字能够帮助开发者编写出更加健壮、高效的代码。

    Java中static、this、super、final用途,用法及实例

    在Java编程语言中,`static`、`this`、`super`和`final`是四个非常重要的关键字,它们各自有着特定的用途和用法。以下是对这些关键字的详细解释: 1. **static**: - **静态方法**:如文中所示,`static`修饰的...

    Java的关键字与保留字

    Java拥有51个关键字,这些关键字在编程中扮演着核心角色,用于声明类型、控制流程、异常处理等。下面我们将逐一介绍这些关键字: 1. **abstract**:用于定义抽象类和抽象方法,表示该类不能被实例化,或方法没有...

    java中final和static的区别

    6. 静态方法:静态方法可以通过类名和该类对象调用,因此静态方法中不能有 this 和 super 关键字。因为静态方法是独立于任何实例化对象,是属于类本身,所以静态方法必须被实现,不能是抽象的。 7. 静态方法经常...

    Java基础之关键字_Java基础之关键字_源码

    在编程语言的学习中,了解和掌握关键字是至关重要的一步,特别是在Java这种强类型的语言中。本文将深入探讨Java中的关键字,这些关键字是Java语法结构的基础,它们被Java编译器特殊处理,有着特定的含义和功能。 ...

Global site tag (gtag.js) - Google Analytics