[2016-9-3]final修饰符、接口与内部类

1、final修饰符

final定义变量必须进行初始化,并且一经定义不可修改,对于final类变量来说,进行初始化的地方,有以下

两处:

  1. static代码块中
  2. 定义时直接进行初始化操作
final成员变量进行初始化的地方有三处:
  1. 非static代码块中
  2. 构造函数中
  3. 定义时直接进行初始化操作

2、接口和内部类

  1. 接口是一种契约,用来规定类的实现方式,类应该按照接口给定的规则实现,继承了同一接口的任何类(抽象类除外)都必须实现其中定义的方法,在Java中类只支持单继承,但是可以实现多个接口,一个接口也可以继承其他的接口,这样就实现了java的多继承,对于给定的类,被继承的类以及集中起来实现的接口被称为超类型,从超类型来看,新类就是子类型,子类型的引用可以出现在任何超类型引用所出现的地方,简单来说就是任何父类能够出现的地方,子类能够替代的出现在那里,比如作为方法的参数时,常用父类的引用(最好传入参数的类型是接口类型)作为参数,而实际使用的时候,传入子类型的引用,从而实现多态的效果
  2. 接口中可以定义常量,方法,嵌套类和接口,接口中定义的方法隐式为abstract public 也不能有其他的例如native等修饰符,也不可能是static,因为静态方法不可能是抽象的,常量隐式的为public static final,标记接口是未定义任何内容的接口,例如Serializable接口等
  3. 在一个接口中可以定义另一个或多个接口,这种嵌套类型是允许的,对于类来说,嵌套类也是允许的,尽管不能够实例化一个接口,但是却可以声明一个接口类型变量,这个接口类型变量必须引用实现了接口的类对象这也就是为什么在方法的参数中可以使用接口类型作为参数
  4. 尽量不要使用在接口中只定义常量,而没有方法的接口
  5. 接口和包含了抽象方法的抽象类很像,实现或者继承它们的类都必须实现其中定义的抽象方法,但是为什么还需要接口呢,全部用抽象类不行吗?因为java只支持但继承,一个类只能扩展一个类,如果想要扩展其他的类就不行了,而接口解决了这个问题,一个类可以实现多个接口,java使用接口来实现多继承的功能
  6. 定义在其他类内部的类称为内部类,在java中只有内部类可以是私有的,内部类可以使用private修饰符修饰。内部类可以访问到外部类的所有方法和属性包括私有的,并且内部类对于包中的其他类是隐藏的,静态内部类相当于扩展了命名空间,可以解决命名冲突的问题,但是却失去了普通内部类可以访问外部类成员变量和方法的功能,内部类使用外部类outer的变量或者方法可以这样做outerClassName.this.xxxx,创建内部类的实例可以通过这种方式:OuterCls outer=new Outer();OuterCls.inner inner=outer.new Inner();
  7. 匿名内部类在类的定义只使用一次的时候使用,接口或者抽象类都可以通过匿名内部类来实现


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值