内部类和匿名类

这篇具有很好参考价值的文章主要介绍了内部类和匿名类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、内部类

1.数据访问

2.静态内部类 

二、内部类和外部类区别

1.访问修饰符:

2.static修饰:

3.使用:

三、匿名类

 PS:小练习


一、内部类

内部类是指将一个类定义在另一个里面。

内部类分为static内部类和普通内部类。

public class A{
      class B{//内部类

        }
}

这个内编译后会产生两个.class文件,分别是A.class、A$B.class。

一个类可以有多个内部类,内部类可以实现接口和继承类,内部类可以解决Java单继承问题,因为内部类和外部类可以相互访问。

1.数据访问

外部类和内部类可以相互访问类中的成员,包括私有的 

package structure;

public class A {
    public String name;
    private int age;
    public class B{//内部类
        public String bName;
        private int bAge;
        private void setAge(){
            name="";
            this.bAge=age;
        }
    }
    public class C{
        public String cName;
        private int cAge;
    }
    public void compareAge(){
        B b=new B();
        this.age=b.bAge;
        b.setAge();
        C c=new C();
        c.cAge=10;
    }

    public static void main(String[] args) {

    }
}

 内部类的实例化,内部类依托于外部类,所以内部类的实例化要先实例化外部类,然后再实例化内部类。

package structure;

public class ATest {
    public static void main(String[] args) {
        A a=new A();
        A.B b=a.new B();
        b.bName="";
    }
}
2.静态内部类 
package structure;

public class AA {
    static class BB{//static内部类
        
    }
}

静态内部类不能直接访问外部类的成员,可以直接访问外部类的静态成员。 

package structure;

public class AATest {
    public static void main(String[] args) {
        AA aa=new AA();
        AA.BB bb=new AA.BB();
    }
}

所有的访问修饰符都可以修饰内部类 

二、内部类和外部类区别

1.访问修饰符:

外部类只有两种访问权限:public以及package-access

内部类可以有四种访问权限:public、protected、package-access、private

2.static修饰:

外部类不可以使用static修饰。

3.使用:

外部类可以直接被使用,内部类的使用依赖于外部类。

三、匿名类

匿名类是没有明确名称的类。

public static void main(String[] args) {
Pet pet = new Dog();
pet.cry();
//匿名类
Pet p = new Pet() {
@Override
public void cry() {
System.out.println("喵 喵 喵");
}
};
p.cry();
}

 匿名类不能使用修饰符,在方法的内部,对外隐藏。

不能是static,隐式final类。

匿名类没有类名,没有构造方法。

匿名类可以访问类中的成员,不能访问方法中的变量,除非是final型的。

匿名类一般是实现接口、继承抽象类,相当于实现和继承了这个接口/类。文章来源地址https://www.toymoban.com/news/detail-678089.html

package structure;

public abstract class Pet {
    public abstract void cry();

    //匿名类
    Pet pet = new Pet() {
        @Override
        public void cry() {
            System.out.println("喵喵喵");
        }
    };
    
}

 PS:小练习

package structure;

public class Outer {
    private int index=100;
    void print(){
        Inner i=new Inner();
        i.print();
    }
    class Inner{
        void print(){
            System.out.println(index);
        }
    }
}
class Test{
    public static void main(String[] args) {
        Outer outer=new Outer();
        outer.print();
    }
}

到了这里,关于内部类和匿名类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++技能树】类和对象的使用 --初始化列表,static,友元,内部类,匿名对象的理解与使用

    Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法…感兴趣就关注我bua! 这是一个C++的默认构造函数 虽然我们大多时候混淆初始化与赋值的概念,但在这里,构造函数体中只能成为 赋值 ,因为初始化只能初始化一次,而赋值可以赋值多次。 那么在哪里进行初始化呢

    2024年02月06日
    浏览(44)
  • C++类和对象终章——友元函数 | 友元类 | 内部类 | 匿名对象 | 关于拷贝对象时一些编译器优化

    🌸作者简介: 花想云 ,在读本科生一枚,致力于 C/C++、Linux 学习。 🌸 本文收录于 C++系列 ,本专栏主要内容为 C++ 初阶、C++ 进阶、STL 详解等,专为大学生打造全套 C++ 学习教程,持续更新! 🌸 相关专栏推荐: C语言初阶系列 、 C语言进阶系列 、 数据结构与算法 、 Linu

    2023年04月15日
    浏览(41)
  • 【C++】:类和对象(下):explicit || 再谈构造函数 || static成员 || 友元 || 内部类 || 匿名对象 || 拷贝对象时的编译器优化问题 || 再次理解类和对象

    🔫类和对象(下篇) 🔫【本节目标】 🔫1. 再谈构造函数 🔫2. Static成员 🔫3. 友元 🔫4. 内部类 🔫5.匿名对象 🔫6.拷贝对象时的一些编译器优化 🔫7. 再次理解类和对象 🏄1.1 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值

    2024年01月21日
    浏览(42)
  • C++ 类和对象(静态的static、友元、内部类、匿名对象、explicit)知识点+完整思维导图+实操图+深入细节通俗易懂建议收藏

            时间的步伐有三种:未来姗姗来迟,现在像箭一样飞逝,过往永远静立不动。本章是类和对象的一个收尾篇,相信通过这三篇类和对象的学习,应该你已经更加清楚了解了C++的类和对象。 话不多说安全带系好,发车啦 (建议电脑观看) 。 附:红色,部分为重点

    2024年02月06日
    浏览(47)
  • java匿名类和匿名函数的概念和写法

    前言 Lambda流式操作是Java8中重要的特性,lambda表达式核心概念为 函数式接口 、 :: 、 - 等基本语法,可以大大减少代码量的编写,使代码更加优雅 只有一个抽象函数的接口,就是函数式接口 :: 可以称之为域运算符,主要是用来获取方法 - 的语法为 (变量或参数)-{代码体},是

    2024年02月08日
    浏览(36)
  • Java成员类(内部类、匿名内部类)

    Java 中内部类指的是声明在一个类内部的类,它可以访问外部类的私有变量和方法,而外部类不能直接访问内部类的成员。内部类的主要作用是为外部类提供一种封装和组织代码的方式。 内部类可以解决Java类单继承的问题,因为内部类和外部类可以相互访问。 成员内部类(

    2024年02月11日
    浏览(35)
  • 【Java基础】匿名内部类

    🎊专栏【Java基础】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【The truth that you leave】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 🎁什么是匿名内部类 🎁为什么要使用匿名内部类 🎁详细解释 🏳️‍🌈不使用匿名内部类 🏳️‍🌈使

    2024年02月05日
    浏览(43)
  • Java 匿名内部类

    在 Java 中,匿名内部类是一种可以在创建对象时直接定义内部类的方式,而不需要单独定义一个类。它通常用于创建实现某个接口或继承某个类的对象。 Java 匿名内部类是一种可以在创建对象时直接定义内部类的方式,而不需要单独定义一个类。它通常用于创建实现某个接口

    2024年02月07日
    浏览(36)
  • Java匿名内部类

    Java中的匿名内部类是一种可以在声明时直接创建对象的内部类。这种内部类没有名字,通常用来简化代码,特别是在定义事件处理程序和监听器方面非常有用。 需要注意的是,匿名内部类不能有构造函数,因为它没有名字。同时,匿名内部类可以访问外部类的成员变量和方

    2024年02月10日
    浏览(32)
  • Java内部类详解(含:成员内部类、局部内部类、匿名内部类、静态内部类)

    字面意思,在类的内部编写的类就叫内部类!即一个类的内部又完整的嵌套了另一个类结构,被嵌套的类称为内部类(inner class),嵌套其他类的类称为外部类(outer class)。 内部类是类的第五大成员→【提示:类的五大成员是哪些?[属性、方法、构造器、代码块、内部类]】 内部类一

    2024年04月24日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包