全美网站建设公司,哪里有做投票的网站,修改网站域名,专题网站建设意义何在文章目录 1.什么是内部类?2.实例内部类3.静态内部类4.局部内部类5.匿名内部类6.结语 1.什么是内部类? 内部类就是在一个类中再定义一个类,内部类也是封装的体现.它可以被声明为 public、protected、private 或默认访问控制符。内部类可以访问外部类的所有成员变量和方法… 文章目录 1.什么是内部类?2.实例内部类3.静态内部类4.局部内部类5.匿名内部类6.结语 1.什么是内部类? 内部类就是在一个类中再定义一个类,内部类也是封装的体现.它可以被声明为 public、protected、private 或默认访问控制符。内部类可以访问外部类的所有成员变量和方法包括私有成员。内部类可以用来实现一些特殊的功能比如实现回调函数、事件处理等。常见的内部类包括实例内部类(成员内部类)、静态内部类、本地内部类、匿名内部类等。 2.实例内部类
实例内部类是指定义在另一个类的实例内部的类。它与静态内部类不同静态内部类是定义在另一个类中的静态类。实例内部类可以访问外部类的实例变量和方法也可以定义自己的成员变量和方法。
class Outer {// ...class Inner {// ...}// ...
}上述中的Inner类就是实例内部类.
实例内部类的实例化方式如下 在使用实例内部类时需要首先创建外部类的实例然后通过外部类实例来访问内部类。
实例内部类不能定义静态成员变量,如果定义,要被final修饰: 实例内部类不能定义静态方法: 如果实例内部类和外部类 的 成员变量名相同,那么实力内部类会先访问自己的成员变量 实例内部类的特点:
实例内部类不能定义静态成员变量,如果定义,要被final修饰实例内部类不能定义静态方法如果实例内部类和外部类 的 成员变量名相同,那么实例内部类会先访问自己的成员变量
3.静态内部类
Java中的静态内部类是指在一个类的内部定义的另一个类并且该内部类被声明为静态(static)的。静态内部类与普通内部类的区别在于静态内部类不依赖于外部类的实例可以直接通过外部类名访问。
静态内部类的定义方式如下
class OuterClass {// 外部类的成员和方法static class StaticInnerClass {// 静态内部类的成员和方法}
}静态内部类的实例化方式如下
OuterClass.StaticInnerClass innerObj new OuterClass.StaticInnerClass();以下是静态内部类的一些注意点:
静态内部类可以访问外部类的静态成员和方法但不能访问外部类的非静态成员和方法。 实例: 同时静态内部类也可以定义静态成员和方法这些成员和方法与外部类的静态成员和方法类似可以直接通过类名访问。 方法也是一样的就不一一演示了.
静态内部类的使用场景包括但不限于
将一个类封装在另一个类中使得外部类的代码更加简洁清晰。需要在外部类的静态方法中使用一个类但又不想将该类声明为外部类的静态成员。需要在同一个包中访问一个类但不想将该类声明为公共类。
4.局部内部类
Java局部内部类是指在一个方法或代码块内部定义的内部类。与成员内部类不同局部内部类只能在定义它的方法或代码块内部使用无法在外部访问。
局部内部类的语法格式如下
class OuterClass {// 外部类代码void outerMethod() {// 外部类方法class LocalInnerClass {// 局部内部类代码}// 使用局部内部类LocalInnerClass localInner new LocalInnerClass();}
}局部内部类的特点
只能在定义它的方法或代码块内部使用无法在外部访问。可以访问外部类的成员变量和方法包括私有成员。局部内部类可以访问方法中的局部变量但是这些变量必须是final类型的。局部内部类可以实现接口或继承抽象类。局部内部类不能定义静态成员或方法也不能包含静态代码块。
局部内部类使用的很少,了解即可.
5.匿名内部类
Java匿名内部类是一种特殊的内部类它没有类名直接在创建对象时定义并实现。通常用于创建只需要使用一次的类对象可以简化代码提高代码的可读性和可维护性。
匿名内部类的语法格式如下
new 类名/接口() {// 匿名内部类的类体部分
};示例:
interface myInterface {public void func();
}public class Demo1 {public static void main(String[] args) {new myInterface(){Overridepublic void func() {System.out.println(方法的重写);}}.func();}
}
// 输出:
// 方法的重载看到这里是不是有点懵.别慌,来看下面这张图: 这段代码定义了一个接口 myInterface其中有一个抽象方法 func()。使用匿名内部类实现了 myInterface 接口并重写了 func() 方法。最后通过创建匿名内部类的对象来调用重写后的 func() 方法
内名内部类的使用包含了继承或实现方法重写创建对象。整体就是一个类的子类对象或者接口的实现类对象.
使用场景: 当方法的参数是接口或者类时以接口为例可以传递这个接口的实现类对象如果实现类只要使用一次就可以用匿名内部类简化代码。
6.结语
内部类在Java中的一个重要特性,要重点掌握实例内部类,静态内部类和匿名内部类. 感谢你的观看!希望这篇文章能帮到你! 专栏: 《从零开始的Java学习之旅》在不断更新中,欢迎订阅! “愿与君共勉,携手共进!”