【Java面试】- static、abstract、interface关键字解析

static关键字解析

1、static方法: 

又叫静态方法,不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为就没有可以依附的对象。因此在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。但是在非静态成员方法中是可以访问静态成员方法/变量的。若想在不创建对象的情况下调用某个方法就可以将这个方法设置为static

2、 static变量:

也称静态变量静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。static成员变量的初始化顺序按照定义的顺序进行初始化

3、static代码块

静态代码块可优化程序性能。static代码块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。可优化程序性能原因是因为它的特性:只会在类加载的时候执行一次

注意事项:

       1、static关键字不会改变变量和方法的访问权限;

       2、静态成员变量虽然独立于对象,但是不代表不可以通过对象去访问,所有的静态方法和静态变量是可以通过对象访问                  (只要访问权限足够);

       3、 static是不允许用来修饰局部变量。

abstract关键字解析 

1、abstract类: 
     1)不可被实例化,抽象类只能声明引用,不能创建对象 ;
     2)抽象类有构造器 (凡是类都有构造器) ;

2、abstract方法(只声明,不实现): 
     1)格式:没方法体,如:public abstract void hello(); 
     2)抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法 ;
     3)若子类继承抽象类,并重写了所有的抽象方法,此类就是一个可被实例化的实体类; 
     4)若子类继承抽象类,没有重写所有的抽象方法,意味着此类中仍有抽象方法,那么此类必须声明为抽象的。

注意事项:

        1、有抽象方法的类一定是抽象类,但是抽象类中不一定要有抽象方法,抽象类中可以有构造方法;

        2、子类继承抽象类,如果子类不想成为抽象类,就必须实现父类中声明的所有抽象方法。

interface关键字解析 

interface类(接口)特点:

  • 接口中所有的方法都是抽象的且abstract关键字是可以省略的;
  • 所有的方法都是public修饰,也可以省略; 
  • 接口内的成员变量,只能是public static final 类型的(原因:多实现的、OCP原则)。 
  • 接口不能有构造方法。 
  • 接口中只有两种类型的成员,一种是public abstract 类型的方法,一种是public static final 类型的变量。

 abstract与interface关键字的区别:

 要点abstract(抽象类)interface(接口类)
不同点构造方法可以有不能有
普通成员变量可以有不能有
普通方法可以有必须是抽象的
访问修饰符public,protectedpublic
静态方法可以有不能有
静态成员变量访问类型任意必须是public static final
实现/继承的个数只能继承一个可以实现多个
相同点都有抽象方法,抽象类中可以没有抽象方法
只能用来继承/实现
不能使用new关键字创建对象

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值