我是菜鸟:Java中接口/内部类中容易忽略的问题总结
2015-07-22 22:02
246 查看
接口
接口可以继承
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通过FTP服务器上传下载文件的解决方案
- 算法学习之java实现归并排序
- java的(PO,VO,TO,BO,DAO,POJO)解释
- Java集合框架(List, Set, Map, Collections)
- java 程序构成 及 开发工具 简介
- java的throw和throwszenmeyong
- java错误提示------ The public type must be defined in its own file
- java轉格式代碼
- Java常用日期操作详解
- 关于java基础--连接池与通用的操作数据库更新方法
- Intellij Idea编译项目下的.java文件时的编码问题
- 关于java基础--SQL驱动及JDBC连接
- 关于java基础--管道流和压缩
- 关于java基础--线程的详解与测试
- Java框架篇---Mybatis 入门
- 关于java基础--PIO操作xls文件、持久化对象以及拷贝文件
- 算法学习之java实现希尔排序
- 关于java基础--IO流
- 深入理解JAVA虚拟机笔记 - 03
- java统计一个字符串中中文,英文,数字的个数