首页 > 其他分享 >final、static、abstract修饰符以及Interface接口

final、static、abstract修饰符以及Interface接口

时间:2022-08-27 15:14:42浏览次数:97  
标签:变量 静态 abstract 修饰符 接口 static 修饰 抽象类 方法

转载:https://www.cnblogs.com/gbxblog/p/13887382.html

final可以修饰:类、变量、方法
当final修饰类的时候,说明该类不能被继承。
当final修饰方法的时候,说明该方法不能被重写。
当final修饰成员变量时,有两种情况:
如果修饰的是基本类型,说明这个变量的所代表数值永不能变(不能重新赋值)。
如果修饰的是引用类型,该变量的引用不能变(即地址值不能改变),但引用所代表的对象内容是可变的(即该地址指向的对象中内容可变)。

当成员被静态修饰后,除了可以被对象调用外,还可以直接被类名调用:类名.静态成员。
静态成员随着类的加载而加载。
静态成员优先于对象存在。
静态成员被所有对象所共享。
静态方法只能访问静态成员, 非静态方法既可以访问静态又可以访问非静态。
静态方法中不可以定义this,super关键字(因为this代表是对象,而静态存在时,有可能没有对象,况且静态优先于对象存在,所以静态方法运行时,this是没有任何对象代表的。简单说,先进内存的数据不可以访问后进内存的数据,可是后进内存数据可以访问先进内存的数据)。

静态变量也称为类变量,也就是直接可以被类名调用的变量,这个变量是所属于类的;
  非静态变量称为成员变量,或者实例变量,是被对象调用的,是所属具体对象的。

静态变量随着类的加载而加载,也意味着随着类的消失而消失,生命周期最长;
   实例变量,随着对象的创建而加载,随着对象的消失而消失,按照对象的生命周期而存在。

静态变量存储在方法区的静态区中;
   实例变量存在于对象所属的堆内存中。

静态变量数据,被所有对象所共享;
   实例变量是对象中的特有数据。

  abstract一般用来修饰类和方法

abstract修饰类
  abstract修饰类,会使得类变成抽象类,抽象类不能生成实例,但是可以作为对象变量声明的类型,也就是编译时类型。

注意事项:
抽象类虽然不能实例化,但是有自己的构造方法。
抽象类和接口(interface)有很大的不同之处,接口中不能有实例方法去实现业务逻辑,而抽象类可以有实例方法,并实现业务逻辑。
抽象类不能被final修饰,因为被final修饰的类无法被继承,而抽象类需要通过继承去实现抽象方法(需要子类继承并覆盖其中的方法)。
abstract修饰方法
  abstract修饰方法会使得这个方法变成抽象方法,也就是只有声明,而没有实现,需要子类重写。

注意事项:
有抽象方法类一定是抽象类,但是抽象类不一定有抽象方法。
父类是抽象类,其中有抽象方法,那么子类继承父类,并把父类中的所有抽象方法都实现了,子类才有创建对象实例的能力,否则子类也必须是抽象类。
抽象类中可以有构造方法,子类在构造子类对象时需要调用父类(抽象类)的构造方法。
抽象方法不能用private修饰,因为抽象方法必须被子类重写,而private权限对于子类来说是不能访问的,所以会产生矛盾。
抽象方法也不能用static修饰,如果用static修饰,就可以直接通过类名调用,而抽象方法压根没有主体,这么做毫无意义。

  接口是抽象方法与全局常量的集合。子类实现接口时,用关键字implements实现。

注意事项:
接口中所有方法都必须是抽象的,默认修饰符:public abstract
接口中的成员变量默认修饰符:public static final
子类可以实现多个接口,同时要覆写接口父类中的所有抽象方法。
接口可继承接口(可多继承)。
接口无法直接实例化对象,只能通过子类实现。
接口可向上转型成它的任意接口类型。
接口中没有构造方法,因为接口中所有方法都是抽象方法。
接口中只允许public权限(属性、方法),可直接省略不写。
接口不可实例化但可作为类型引用。

抽象类中可以有普通成员变量,接口中没有普通成员变量。
抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以是任意的,但是接口中定义的变量只能是public static final类型,且默认为public static final类型。
抽象类可以有构造方法,接口中不能有构造方法。
抽象类中抽象方法的访问类型可以是public、protected,但是接口中的抽象方法只能是public类型的,并且默认为public abstract类型的。
一个类可以实现多个接口,但是只能继承一个抽象类。

标签:变量,静态,abstract,修饰符,接口,static,修饰,抽象类,方法
From: https://www.cnblogs.com/chenyi502/p/16630586.html

相关文章

  • 了解static修饰
    staic静态变量某些特定的数据在内存中只有一份,而且能被一个类的所有实例对象共享。可以使用类名.变量名的形式来访问。也可以先实例化对象在用对象,变量名访问classS......
  • 静态static关键字修饰成员方法和内存图
    静态static关键字修饰成员方法一旦使用static修饰成员方法,那么就成为了静态方法,静态方法不属于对象,而是属于类的如果没有static关键字,那么必须首先创建对象,然后通过对象......
  • static
    C语言中static的作用1voidtest()2{3intb=1;4b++;5printf("b=%d\n",b);6}7intmain()8{9inta=0;10while(a<......
  • 静态static关键字概述和修饰成员变量
    静态static关键字概述  静态static关键字修饰成员变量案例:Student7类:privateintid;privateStringname;privateintage;staticStringroom;privatestaticin......
  • php变量 global/static
    通常,函数内定义的变量,在函数内生效,函数执行完毕销毁global全局变量,函数外可以调用 functiontestGlobal(){  global$a;  $a=1;}//testGlobal();/......
  • VUE学习-自定义修饰符
    自定义修饰符组件constmyComponent={template:`<inputtype="text":value="modelValue"@input="emitValue"/>`,props:{modelValue:String,......
  • Java-继承和修饰符
    1.继承1.1继承的实现(掌握)继承的概念继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,以及追加属性和方法实现继承的格式......
  • 五种访问修饰符
    在C#语言中,共有五种访问修饰符:public、private、protected、internal、protectedinternal。作用范围1.public公有访问。不受任何限制,当前类、子类、实例对象都可以访......
  • Java学习 (24) 对象篇(04)static关键字
    目录static关键字语法实例代码块语法实例引用库语法实例static关键字static在类中修饰成员变量,在方法中则修饰成员方法static在属性中叫做静态属性,在方法中叫做静态......
  • Kubernetes学习笔记(十四):Static Pods
    kubelet依赖于kube-apiserver来获得关于在其node上加载哪些pod的指令,这是基于存储在etcd数据库中的kube-scheduler所做的决定。kubelet也可以独立运行,可以创建pod,可以指定......