侧边栏壁纸
  • 累计撰写 781 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

内部类 匿名类

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 100 阅读 / 1,270 字
温馨提示:
本文最后更新于 2022-04-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Java内部类
1.
静态嵌套类 (Static Nested Class) 和内部类(Inner Class)的不同?(2017- 11-16-wl) 静态嵌套类:Static Nested Class 是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例 化。 内部类:需要在外部类实例化后才能实例化,其语法看起来挺诡异的。


内部类(可以为static,外部类不可)
成员嵌套类
局部嵌套类
静态
非静态
匿名嵌套类


也相当于类的成员,接受类成员的约束。
事物:人 包含 心
成员方法
方式一:封装调用:在外部类中定义public的方法,创建内部类对象,调用内部类功能. 创建外部类对象,调用外部类方法。
方式二:直接调用:Person.Heart h = new Person().new Heart(); 成员变量 外部类定义的成员变量,内部类直接访问 内部类定义的成员变量,外部类创建内部类对象进行访问的。
常见修饰符 private:将内部类保护起来,其他类不能直接访问,只能通过外部类的public的方法进行访问。
static:静态的 在内部类中定义静态变量非法 只能在静态内部类中定义静态成员 静态内部类创建方式:Person.Heart h = new Person.Heart(); 静态内部类中静态方法:Person.Heart.think();
匿名类
interface Skill { //必须要声明接口先,也算是接口的另一个用法吧,也可以是抽象类。不能是类,类可以直接实例化。
    public void chang();
public void dance();

public void rap();

}

class Demo4 {
public static void main(String[] args) {

    Skill s1 = new Skill() {
        public void chang() {
            System.out.println("我会唱歌");
        }

        public void dance() {
            System.out.println("我会跳舞");
        }

        public void rap() {
            System.out.println("我会rap");
        }
    };

    s1.chang();
    s1.dance();
    s1.rap();
}

}




匿名内部类

1.
匿名内部类因为没有类名,可知匿名内部类不能定义构造器
2.
因为在创建匿名内部类的时候,会立即创建它的实例,可知匿名内部类不能是抽象类,必须实现接口或抽象父类的所有抽象方法
3.
匿名内部类会继承一个父类(有且只有一个)或实现一个接口(有且只有一个),实现父类或接口中所有抽象方法,可以改写父类中的方法,添加自定义方法。
4.
当匿名内部类和外部类有同名变量(方法)时,默认访问的是匿名内部类的变量(方法),要访问外部类的变量(方法)则需要加上外部类的类名。
5.
内部类可以访问外部类私有变量和方法
6.
不能有static,因为只使用一次。可以有final,可以有static final
0

评论区