`
xiaozhouzhou
  • 浏览: 13934 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

对关键字final、static的理解

 
阅读更多
一、final关键字
    final在java中表示的意思是最终,也可以称为完结器。可以使用final关键字声明类属性方法,在声明是需注意以下几点:
1)使用final声明的类不能有子类;
2)使用final声明的方法不能被子类所覆写;
3)使用final声明的变量即成为常量,常量不可以修改。

使用final声明的类不能有子类
//使用final定义类,不能被继承
final class Student{
}
//错误,不能继承使用final声明的类
class Unstudent extends Student{
}



使用final修饰的方法不能被子类覆写
class Student{
      //使用final定义的方法不能被覆写
      public final void print(){
          System.out.print("执行了");
      }
}
class Unstudent extends Student{
      //错误,不能覆写用final声明的方法
      public final void print(){
           System.out.print("成功了"); 
      }
}



被final修饰的变量即成为常量,常量不可以修改
calss Student{
     //使用final声明的变量就是常量
     private final String name="张三";
     public void print(){
          //错误,常量不能被修改
          name="李斯"
     }
}

二、static关键字
   static是为静态的意思,也可称为全局。如果现在有些属性希望杯所有的对象共享,则就必须将其声明为static属性,而且一个属性使用了static关键字声明之后,可以直接使用类名称进行调用。如果一个鳄梨中的方法想由类调用,则可以声明为static方法。
1)用static声明的属性成为全局属性(也叫静态属性);
2)用static声明的方法有事被称为“类方法”,可以有类名称直接调用,且静态方法中用到的属性必须都是静态属性;


使用static声明属性

class Person {
	String name;
	int age;
        //用static修饰属性变量,则为常量
	static String city="BJ";
        //构造器传参
	public Person(String name,int age){
		this.name=name;
		this.age=age;
	}
	public void info(){
		System.out.println("姓名:"+this.name+",年龄:"+this.age+",城市:"+city);
	}
};
public class People{
	public static void main(String args[]){
                //实例化对象
		Person p1=new Person("张三",25);
		Person p2=new Person("李斯",30);
		Person p3=new Person("王五",35);
		System.out.println("***********修改前*********");
		p1.info();
		p2.info();
		p3.info();
		System.out.println("***********修改后*********");
                //重新给属性city赋值
		p1.city="SH";
		p1.info();
		p2.info();
		p3.info();
	}
}

运行结果为:

下面同过一组图解来说明static声明的属性:

                  a)属性city未改变前

                    b) 属性city未改变后 
    以上程序已经基本完成了修改功能,如我们所知一个类中的公共属性现在由一个对象修改,这样是不合适的。类的公共属性应该由类进行修改是最合适的,因为我们不知道一个类中到底有多少个对象产生。所以在访问static属性时最好可以由类名直接调用,那么有事也就把使用static声明的属性称为类属性。
类属性调用的格式:类名称.static 属性名;上面的代码就可以改为:Person.city="SH"



使用static声明方法
class Person {
       //对所有的属性进行封装
	 private String name;
	 private int age;
	 private static String city="BJ";
	public Person(String name,int age){
		this.name=name;
		this.age=age;
	}
	public void info(){
		System.out.println("姓名:"+this.name+",年龄:"+this.age+",城市:"+city);
	}
      //使用static声明方法
	public static void setcity(String c) {
		city=c;
	}
	public static String getCity(){
		return city;
	}
};
public class People{
	public static void main(String args[]){
		Person p1=new Person("张三",25);
		Person p2=new Person("李斯",30);
		Person p3=new Person("王五",35);
		System.out.println("***********修改前*********");
		p1.info();
		p2.info();
		p3.info();
		System.out.println("***********修改后*********");
              //直接使用类名称调用
		Person.setcity("SH");
		p1.info();
		p2.info();
		p3.info();
	}
}

运行结果为:

   在以上程序中,Person类将所有的属性都进行封装,所以想要设置属性就必须使用setter()方法,但是这里的方法是使用static声明的,所以可以直接使用类名称调用。
    特别要提的是,飞static生命的方法可以调用static声明的属性或方法。但是static声明的方法是不能调用非static类型声明的属性或方法。

使用static声明的方法调用非static方法和属性错误代码
class Person{
     private static string city="BJ";
     private String name="张三";
     public static void sPrint(){
          //打印属性name(此处错误,不能调用非static属性)
          System.out.println("name="+name);
         //调用方法print(此处错误,不能调用非static方法)
          print();
     }
     public void print(){
          System.out.println("成功了");
     }
}

  • 大小: 5.2 KB
  • 大小: 8.6 KB
  • 大小: 8.7 KB
分享到:
评论

相关推荐

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

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

    浅析对Java关键字final和static的理解

    在Java编程语言中,`final`和`static`是两个非常重要的关键字,它们分别用于定义不同类型的特性。下面我们将深入探讨这两个关键字的含义和用法。 首先,`final`关键字在Java中具有三个主要用途:修饰类、方法和变量...

    有关Java中关键字final的理解

    通常,这类常量数据都是基本类型的数据,并赋予关键字final,同时在对此常量定义时需要进行赋值。  值得注意的是:对于基本类型,使用final关键字将使数值恒定不变;而对于对象引用,final则是使引用恒定不变。...

    Java关键字final、static使用总结

    理解并正确使用final和static关键字对于编写高效、可维护的Java代码至关重要。它们可以帮助我们创建不可变对象,防止意外的修改,提高性能,以及在类的生命周期内只执行一次的代码。在设计类和接口时,明智地使用...

    Java-关键字final详解(public static final)

    Java中的`final`关键字是一个非常重要的修饰符,用于在...理解并恰当使用`final`关键字有助于提高代码的可维护性、安全性和性能。在编写不可变对象、定义常量以及防止意外的代码修改时,`final`都是不可或缺的工具。

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

    深入理解 `final` 关键字可以帮助开发者写出更加安全、高效的代码。 首先,`final` 关键字可以用于声明变量。当一个变量被声明为 `final` 时,它的值一旦被赋值后就不能再改变。这适用于成员变量、局部变量以及静态...

    Java final关键字

    在这个学习demo中,我们将深入理解`final`关键字的各种用法及其背后的原理。 首先,`final`关键字用于变量。当一个变量被声明为`final`时,它的值一旦被初始化后就不能再改变。这适用于局部变量、成员变量(包括...

    关键字Final

    在Java编程语言中,`final`关键字扮演着非常重要的角色,它有多种用途,用于创建不可改变的对象、变量和类。下面将详细讲解`final`关键字的五种主要使用方式。 1. **常量(Final Variables)** `final`关键字可以...

    java中final与static的用法

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

    java中final和static的总结

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

    详解Java编程中static关键字和final关键字的使用

    Java编程中的`static`关键字和`final`关键字是两个非常重要的概念,它们分别代表不同的特性。首先,我们来看`static`关键字。 `static`关键字用于声明静态变量和静态方法。静态变量,也称为类变量,属于类本身而...

    stati、thi、supe、final关键字详解

    总结,static、this、super和final是Java编程中非常重要的关键字。static用于声明静态成员,使它们可以在类实例化之前访问;this关键字代表当前对象实例;super用于访问父类的成员;final则用于创建不可变的变量、...

    Java中的final关键字深入理解

    Java中的`final`关键字是一个非常重要的概念,它用于在...理解`final`关键字有助于编写更加安全、高效和易于维护的Java代码。通过合理地使用`final`,可以防止意外的修改,增强代码的清晰度,并为性能优化提供可能性。

    Java中的final关键字

    以下是对`final`关键字在不同场景下使用的详细介绍: 1. **final变量** - `final`修饰的局部变量一旦初始化后,就不能再改变其值。这有助于防止意外修改,增加代码的可预测性和安全性。 - 类级(静态)常量通常也...

    final关键字的使用

    `final`与`static`是两个经常被提及的关键字,它们之间的区别在于: - **Static**:主要用于声明类成员(变量或方法),表明这些成员属于类本身而非实例。这意味着无论创建了多少个类的实例,这些静态成员都只有一...

    Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口

    - `final`修饰变量时,如果是类级别的常量,通常遵循全大写命名约定,如`public static final String MY_CONSTANT = "value"`。 2. **抽象类(Abstract Class)** - 抽象类是一种包含抽象方法的类,抽象方法只有...

    Java this、final等关键字总结

    Java中的关键字this、...总的来说,Java的`this`、`final`、`super`以及相关概念如`implements`、`static`和`instanceof`都是面向对象编程中的关键要素,理解和掌握它们能够帮助开发者编写出更加高效、可维护的代码。

    java关键字final用法知识点

    Java中的`final`关键字是一种非常重要的修饰符,它用于创建不可变的对象或阻止...理解并恰当使用`final`关键字,有助于编写出更安全、可维护的代码。在实际编程中,应根据需求合理地应用`final`,以提升代码质量。

    Java final static abstract关键字概述

    Java编程语言中的`final`, `static`, 和 `abstract` 是三个非常重要的关键字,它们分别用于定义不同的特性。接下来,我们将详细探讨这些关键字的作用及其应用场景。 ### 抽象类(abstract) 1. **定义**:当一个类...

    final关键字

    ### final关键字在Java中的应用与理解 #### 一、final关键字概述 `final`关键字是Java语言中的一个重要特性,主要用于定义不可变的对象、方法或变量等。通过使用`final`关键字,开发人员能够确保某些实体在初始化...

Global site tag (gtag.js) - Google Analytics