我是菜鸟:Java中接口/内部类中容易忽略的问题总结

接口

接口可以继承

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();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值