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

Java基础之final与static

    博客分类:
  • Java
阅读更多
static关键字:

package Static;

/**
 * static关键字
 * 可以修饰属性,方法,类[内部类]
 * 子类能够继承父类的静态方法,但是不能重写父类的静态方法,只是隐藏了父类相同的静态方法
 * 静态的方法不能被覆盖,也不能覆盖非静态方法
 * 只要有静态,就不能覆盖
 * 
 * 不能在一个静态的方法里面去访问一个非静态的成员变量
 * 
 * static代码块:
 * 作用也是完成一些初始化工作。首先执行静态代码块,然后执行构造方法
 * 静态代码块在类被加载的时候执行,而构造方法是在生成对象的时候执行.
 * 想要调用某个类来生成对象,首先需要将类加载到Java虚拟机上,然后
 * 由JVM加载这个类来生成对象
 * static代码块只会被执行一次,因为一个类只会被JVM加载一次,而构造
 * 方法是每次生成一个对象的时候,就会被调用一次
 */
public class StaticClass 
{
	public static void main(String[] args)
	{
		M m = new N();
		//这里输出什么,取决于引用指向的是谁
		m.test();
	}
}

class M
{
	public static void test()
	{
		System.out.println("M");
	}
}

class N extends M
{
	//实现隐藏父类的test()方法,去掉static就是重写,但是因为不能覆盖,所以会报错
	public static void test()
	{
		System.out.println("N");
	}
}


final关键字:

package Static;

/**
 * final关键字:可以修饰属性、方法、类
 * 修饰类时,这个类就是终态类、即不能被继承
 * 修饰方法时,这个方法就是终态方法,即不能被重写
 * 修饰属性时,如果这个属性是一个原生的数据类型,那么这个属性不能被改变,也就是常量了
 * 		        如果这个属性是一个引用类型,那这个引用类型不能再指向其它对象了,但它所指向的对象的内容是可以改变的
 * 此时成员属性必须要显示地赋初值,因为成员变量系统在初始化的时候,如果没有初值,那么系统在调用构造器的时候会默认赋值,但此成员是final的,无法更改,所以会出错了
 * 
 * 对于final类型成员变量,一般来说有两种赋初值的方法:
 * 1.在声明final类型的成员变量时就赋值
 * 2.在声明final类型的成员变量时不赋初值,但在类的所有构造方法中都为其赋上初值
 */
public class FinalClass 
{
	 final int a;
	
	public FinalClass()
	{
		a=10;
		System.out.println(a);
	}
	
	public FinalClass(int a)
	{
		//一定要在这里赋值,虽然上面已经有了一个默认构造器,但对于系统来说,没有先后顺序,调用哪一个由用户决定,他们是平级的,所以这里也要赋初值
		this.a=a;
	}
	public static void main(String[] args)
	{
		People p = new People();
		//p.a = new Address();a是一个final的地址,当然不能改,但是这个地址所指向的对象的属性还是可以改的
		p.a.name="shanghai";
		
		FinalClass f = new FinalClass();
		System.out.println(f.a);
	}
}

class People
{
	final Address a = new Address();
}

class Address
{
	String name="beijing";
}
1
0
分享到:
评论

相关推荐

    java中final和static讲解及实例

    java中final和static讲解及实例

    java中final与static的用法

    在Java编程语言中,`final`与`static`是两个非常关键且常用的关键字,它们各自具有独特的功能和用途,可以极大地增强代码的稳定性和可维护性。下面将详细解析这两个关键字的用法及其在Java中的重要性。 ### 一、`...

    java中final和static的区别

    Java 中 final 和 static 的区别 final 关键字在 Java 中有多种用法,包括修饰变量、方法、类等。下面是 final 关键字的各种用法: 1. final 修饰变量:表示该变量一旦被初始化,程序无法修改变量的值,该变量变成...

    java中final和static的总结

    在Java编程语言中,`final` 和 `static` 是两个非常重要的关键字,它们分别具有不同的含义和用法,但都对代码的结构和行为产生深远影响。本文将深入探讨这两个关键字,并结合实际示例来解释它们的应用场景。 首先,...

    final和static用法详解JAVA

    Java 中的 final 和 static 关键字详解 final 关键字是 Java 中的一种访问修饰符,用于修饰类、方法和变量,以确保它们不能被修改或继承。下面是 final 关键字的详细解释: 1. final 类 final 类不能被继承,也...

    java中final关键字和static关键字详细用法

    Java中的`final`和`static`关键字是编程中非常重要的两个修饰符,它们分别用于不同的场景,以确保代码的稳定性和高效性。 首先,`final`关键字主要用于表示不可变性。它可以用来修饰类、方法和变量。对于类,如果一...

    Java关键字final、static使用总结

    "Java关键字final、static使用总结" 在 Java 编程语言中,final 和 static 是两个非常重要的关键字,它们可以用来修饰类、方法、变量等,了解它们的使用方法和限制非常重要。本文将详细总结 final 和 static 的使用...

    java基础中的final和static

    Java中的`final`和`static`关键字在编程中扮演着重要的角色,它们分别代表了不同的概念和用法。本文将详细解析这两个关键字的应用及其在继承中的差异。 首先,`final`关键字主要有三个应用场景: 1. **final 类**...

    javafinal和static总结.docx

    Java 中的 final 和 static 关键字详解 Java 中的 final 和 static 关键字是两个重要的关键字,它们在 Java 编程中扮演着重要的角色。本文将详细介绍 final 和 static 关键字的使用方法和注意事项。 一、final ...

    final关键字和static_用法

    ### Java中的final关键字详解 #### 一、final的概述与用途 `final`关键字在Java中扮演着重要的角色,它通常被用来表示“不可变”的特性。`final`可以用来修饰类、方法以及变量,其核心目的是为了保护数据的安全性...

    static与final的异同

    在Java编程语言中,`static`和`final`都是关键字,它们用于定义不同的特性,但同时也有一些相似之处。下面我们将详细探讨这两个关键字的区别和用法。 首先,`static`关键字是用来声明类级别的变量或方法,这意味着...

    static、this、super、final的JAVA用法

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

    java多线程关键字final和static详解

    Java多线程关键字final和static详解 Java多线程编程中,final和static关键字扮演着非常重要的角色,它们可以帮助开发者编写更加安全、可靠的多线程程序。在本文中,我们将深入探讨final和static关键字在Java多线程...

    Java中的final关键字

    - 类级(静态)常量通常也用`final`修饰,例如`public static final`,这样的变量被称为常量,如数学中的圆周率π。一旦赋值,就不能更改,常用于定义程序中的固定值。 - `final`修饰的实例变量(非静态)意味着它...

    深入理解Java中的final关键字_动力节点Java学院整理

    public static final String LOAN = "loan"; ``` 在这个例子中,`LOAN` 是一个不可变的常量,尝试重新赋值会导致编译错误。`final` 变量在多线程环境中特别有用,因为它们提供了一种线程安全的方式,无需额外的同步...

    Java中final的深度剖析

    【Java中的final关键字详解】 Java中的final关键字是一个非常重要的修饰符,它用于声明变量、方法和类,确保它们在程序执行期间保持不变。final关键字在Java编程中的应用广泛,可以帮助提高代码的稳定性和可维护性...

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

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

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

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

Global site tag (gtag.js) - Google Analytics