概述
接口
接口可以继承
interface A{…}
interface C{…}
interface B extends A{…}
interface D extends A,C{…}
可以看出不仅接口可以继承,而且还支持多继承,这对于类来说是不行的。
接口中的域
放入接口中的域自动static final 类型,且这些域不能是空的,但是可以被非常量表达式初始化化。
接口可以嵌套
接口可以嵌套在 类 中和其他接口中。
定义在类中的接口,可以为public, private 和包访问权限。(一般的接口的权限为:包访问权限和public. Thinking: 为什么不能为private? java中类的属性可以为private, protected 吗? private定义一个类,只能自己访问,别的类不能调用,这样是没有意义的,所以除了内部类,其他不能用private修饰。)
接口可以嵌套,但是嵌套的接口必须遵循接口元素必须为public的属性。在实现某个嵌套接口的时候,不需要实现嵌套在内部的任何接口。
interface A{
interface B{ void f(); }
void g( );
}
public class C implements A{
public void g(){…}
}
内部类
将一些逻辑相关的类组织在一起,并控制位于内部类的可视性。
内部类的好处:每个内部类都能独立的继承一个实现,无论外围类是否已经继承了某个实现,对于内部类都没得影响。(解决了多继承问题)
在内部类中生成外部类的引用(outclass.this)和直接创建内部类(outer.new InnerClass)
public class OuterClass {
public class InnerClass{
public OuterClass fun(){
return OuterClass.this;
//如果是静态内部类,则不能使用this
}
}
public static void main(String...args){
OuterClass ic = new OuterClass();
OuterClass.InnerClass icA = ic.new InnerClass(); //对于非静态内部类,必须先拥有外部内的对象。
}
}
局部内部类
普通的内部类对象隐式的保存了一个指向它外围类的对象。但是对于static内部类,就不这样了。
这意味着:
1.创建嵌套类的对象,并不需要外围类的对象;
2. 不能从静态内部类中的对象访问非静态的外围类对象。
3. 普通内部类中不能有static数据和static字段,也不能包含嵌套内(静态内部类)(原因?)
匿名内部类
一个方法返回值的生成和与表示这个返回值类的定义结合在一起。
如果定义一个局部内部类,并且希望使用在一个外部定义的对象,那么这个参数必须是final的。而如果参数仅仅是用作传递给基类的构造器,那么不必要求为final的。
在匿名内部类中,不可能有命名的构造器,但是可以通过实例初始化,达到构造器的效果。
接口和内部类的结合
嵌套类(静态内部类)可以作为接口的一部分
package com.kun.innerclass;
interface myInterface {
class InterfaceInner{
String str = "Helllo";
}
class InterfaceTest2 implements myInterface{
@Override
public void fun() {
// TODO Auto-generated method stub
}
}
void fun();
}
最后
以上就是活泼海燕为你收集整理的我是菜鸟:Java中接口/内部类中容易忽略的问题总结接口内部类接口和内部类的结合的全部内容,希望文章能够帮你解决我是菜鸟:Java中接口/内部类中容易忽略的问题总结接口内部类接口和内部类的结合所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复