传智博客JAVA基础第十天

一.接口
1.什么是接口
接口是一种特殊的抽象类. 一个类可以继承多个接口.
*** 2.接口和抽象类的区别
抽象类用abstract class定义, 接口用interface定义.
抽象类中可以有不抽象的方法, 接口中的方法全是抽象的.
抽象类使用extends继承, 接口使用implements实现.
抽象类中的方法没有默认修饰符, 接口中的方法默认是被public abstract修饰的.
抽象类中的属性没有默认修饰符, 接口中的属性默认是被public static final修饰的.
抽象类要占用继承的位置, 接口不用占用继承位置.
3.接口相对于抽象类的优点
接口可以被多继承, 一个类同时可以实现多个接口, 这个类的对象就可以被当作多种类型来使用. 
这么做更好的支持了多态.
4.什么时候用接口, 什么时候用抽象类
能用接口的时候就不用抽象类, 因为接口不占用继承的位置
如果需要在类中定义不抽象的方法, 那么就只能使用抽象类了
二.内部类
  * 1.类中的内部类
在一个类中可以定义一个新的类, 这个新的类就是外部类的一个成员.
   内部类的类名是: 外部类名.内部类名
    创建内部类对象时, 必须先创建外部类对象. 例如: Outer.Inner inner = new Outer().new Inner();
    内部类的用途: 
如果定义一个类的时候, 希望先创建另一个类对象再创建这个类对象, 那么就可以把类定义为内部类
内部类是外部类的一个成员, 可以私有化, 只在当前外部类中使用
    内部类中可以访问外部类的成员(私有的也可以). 访问方式: 外部类名.this.成员名
注意: 
内部类可以访问外部类成员, 因为内部类对象存在时, 一定会对应一个外部类对象
外部类不能访问内部类成员, 因为外部类对象创建时, 不一定有内部类对象, 即使有, 一个外部类对象也可以对应多个内部类对象
内部类中不能定义静态成员, 因为静态的本意就是不创建对象即可使用, 而内部类则需要创建外部类对象才能使用, 它们互相矛盾
2.静态内部类
类中的内部类可以使用static修饰
不用创建外部类对象, 可以直接创建内部类对象. 例如: Outer.Inner inner = new Outer.Inner();
由于类可以直接使用, 所以也可以定义静态成员
静态内部类中不能使用外部非静态的成员, 因为内部类创建的时候可能没有创建外部类对象
3.方法中的内部类
类也可以在方法中定义, 这种类只能在当前方法中使用
方法中的内部类也可以访问外部类中的成员, 使用方式和类中内部类相同
方法中内部类的class文件名中会带有一个编号. 不同的方法中可以有同名的内部类, 用编号区分
方法中的内部类访问方法中局部变量时, 变量必须是final的
注意: 创建对象的代码必须在声明类的代码下面
  * 4.匿名内部类
如果一个类只使用一次, 那么就可以定义为匿名内部类
定义方式: new 父类名() { 类定义 }
定义了匿名内部类之后, 会自动使用这个类创建一个对象
匿名内部类的clsas文件名是: 外部类名$编号.class
匿名内部类是方法中内部类的一种, 访问方法中局部变量, 也需要加上final
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值