final关键字和static关键字的简单理解

final关键字:

1、final修饰的类不可以被继承;final修饰的方法不可以被重写;final修饰的变量不可以被修改;

好处:1、为方法上锁,当定义方法不想被子类修改时可以采取此办法;

   2、提高执行效率,编译器加载内嵌机制;

static关键字:

1、static方法:

  1、只能调用其他的static方法

  2、只能使用static变量

  3、不能以任何方式引用this或者super关键字

(因为静态方法在编译时,最先被加载,所以有他的优势 以及 一定的局限性)

static常常在应用开发中提供一些实用工具类

static 静态也就是全局的意思,其不与具体对象相关直接由类名直接调用

一般定义static方法时,都用private修饰,其他类不可以修改和直接实用;

static变量

按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是:对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。

static方法

静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法 (就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为实例成员与特定的对关联!这个需要去理解,想明白其中的道理,不是记忆!!!

因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。

当final和static同时使用时,相当于全局常量;

时间: 2024-10-11 06:06:24

final关键字和static关键字的简单理解的相关文章

final关键字、static关键字

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

Java——面向对象进阶(final关键字,static关键字,匿名对象,内部类,包的声明与访问,四种访问修饰符,代码块)

一.final关键字 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后,就可以对其中的方法进行重写,那怎么解决呢? 要解决上述的这些问题,需要使用到一个关键字final,final的意思为最终,不可变.final是个修饰符,它可以用来修饰类,类的成员,以及局部变量. 1.修饰类 被final修饰的类不可以被继承,但是可以继承其他类. class Yy {} final cl

final关键字,static关键字

Final final的意思为最终,不可变.final是个修饰符,它可以用来修饰类,类的成员,以及局部变量.不能修饰构造方法. 注意: 被final修饰的类不能被继承但可以继承别的类 class Yy {} final class Fu extends Yy{} //可以继承Yy类 class Zi extends Fu{} //不能继承Fu类 final修饰成员方法:    1.该方法可以被子类继承,但是不能被重写    2.从父类那里继承来的方法重写后可以加final关键字 class Fu

fianl关键字和static关键字

final关键字 1.概念: 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后,就可以对其中的方法进行重写,那怎么解决呢? 要解决上述的这些问题,需要使用到一个关键字final,final的意思为最终,不可变.final是个修饰符,它可以用来修饰类,类的成员,以及局部变量.不能修饰构造方法. 2.final的特点: 1.final 修饰类不可以被继承,但是可以继承其他的类(

4.6-全栈Java笔记:THIS关键字和STATIC关键字

this关键字 对象创建的过程和this的本质 构造方法是创建java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回了该类的对象,但这个对象并不是完全由构造器负责创建的.创建一个对象分为如下四步: 1. 分配对象空间,并将对象成员变量初始化为0或空 2. 执行属性值的显示初始化 3. 执行构造方法 4. 返回对象的地址给相关的变量 this的本质就是"创建好的对象的地址"!  由于在构造方法调用前,对象已经创建.因此,在构造方法中也可以使用this代表"当前对

C#学习笔记---修饰符,this关键字和static关键字

1.  C#中类的修饰符: public 表示不限制对该类的访问  protected 表示只能从所在类和所在类派生的子类进行访问    private 只有其所在类才能访问 internal 只有对用一个包中的应用程序或库才能访问  abstract 抽象类不允许建立类的实例 sealed 密封类不允许被继承 与Java相比,protected修饰符的定义有所改变.C#中增加的internal,类似于Java中protected的定义.sealed修饰符类似Java中final class的定

PHP中的静态关键字-Static

当初去盛大笔试的时最后有两道题目,一道题目是关于Static,一道是关于clone()方法: Static表示的是静态关键字,可以修饰变量和方法: 静态变量(属性): 静态变量可以理解为“只有一个”,无论它所在的类创造多少个实例,它始终只有一个,在内存中只有一份,为所有的实例共用. 下面是例子: <?phpclass dome{public static $var = 1;public function myfun(){echo "var is ".self::$var.&quo

self ,super , static关键字

1.self关键字  自己的   代表当前对象和当前类的. a.如果self是在对象方法中使用的话,self就代表当前的对象. self其实是一个指针,是当前对象的地址. 有什么用? 对象方法中,是可以声明一个和属性名字相同的局部变量的. 在对象方法里,如果你直接使用这个名字相同的这个变量,得到的值是这个局部变量的值. 如果我就是要拿到属性的值呢?就是用self关键字去执向. 如果在对象方法中,要去调用当前对象的其他的对象方法,就使用self去调用. b. self也是可以用在类方法中的,sel

PHP static关键字和self关键字的区别

在PHP的一个类中,带有static关键字的方法和属性被称为静态方法和静态属性,这样的方法和属性可以通过类直接访问,而不需要通过类对应的实例来进行访问,在类中访问静态变量以及静态属性的时候,可以使用self关键字和static关键字,两种访问方式看起来似乎没有区别,但是实际上还是不一样的 abstract class Person { public static $_className = 'Person'; public static function getIntro() { return