IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Java内部类总结 -> 正文阅读

[PHP知识库]Java内部类总结

内部类:简单来讲在一个类的内部再申明一个类。

内部类分类:静态内部类()、非静态内部类【成员内部类、局部内部类(也可叫方法内部类)、匿名内部类)】

非静态内部类详解:(成员内部类)

public class  Outer{
    private String name;
    public void method(){
          System.out.println("这是外部类的非静态方法")
     }
    public static void setMethod(){
           System.out.println("这是外部类的静态方法")
     }

    //非静态成员内部类
    public class Inner{
            public void innermethod(){
          System.out.println("这是内部类的非静态方法")
     }
    
    }
   //注意:非静态内部类当中不能定义静态方法
}

非静态成员内部类对象的创建:(啥也不说直接上代码理解)

 public static void main(String[] args) {
         Outer outer=new Outer();
         //使用外部类对象创建内部类对象,并使用内部类对象
        Inner inner=outer.new Innor();
        inner.innerMethod();

        public void innerMethod(){
            //调用外部类中的静态方法和非静态方法
              method();
              setMethod();

           }
    }

所有的内部类都会编译成 一个.class文件,例如:Outer$Inner.class

总结:1.非静态成员内部类可以访问外部类的所有成员

? ? ? ? ? ?2.非静态成员内部类中可以调用外部类的所有方法

静态内部类详解:(成员内部类)

public class  Outer{
    private String name;
    private static String name="lpf";

    public void method(){
          System.out.println("这是内部类的非静态方法")
           //静态方法
           public static void Method(){
           //不能调用非静态方法
           System.out.println("这是外部类的静态方法")
     }
    //静态成员内部类
    public static class Inner{
          private String name;
          //非静态方法
          public void innermethod(){
          System.out.println("这是内部类的非静态方法")
           //静态方法
           public static void innerMethod(){
           //不能调用非静态方法
           method();x
           System.out.println("这是外部类的静态方法")
     }

     }
    
    }
   //注意:静态成员内部类当中能定义静态方法和非静态方法,静态内部类的非静态方法可以访问外部类的静态变量,不能访问外部类的非静态变量
}



/*测试*/
public class Test{
     public static void main(String[] args) {
        //创建静态成员内部类对象时,不需要创建外部类对象
         Outer Inner inner= new Outer.Inner();
        
    }

}

脑子乱了没?总结:静态内部类中可以调用外部类的任何静态成员变量变量和方法。静态内部类不管他的静态方法还是非静态方法都是不可以调用外部类的非静态方法。因为外部类的非静态方法需要创建外部类对象才能调用的,而你的静态内部类是不需要外部类对象就能得到的。静态内部类中的静态方法是不需要创建静态内部类对象就可以调用的,而静态内部类的非静态方法是需要创建静态内部类对象才能调用。

public class Outer{
     public void method(){

     class Inner{
             private String name;
            //内部成员方法
            public void method(){
                 System.out.println("内部方法")

              }
       }
      //局部内部类的访问使用此方法
       Inner inner=new Inner();
      inner.method();
}
 public static void main(String[] args) {
        Outer outer=new Outer();
       outer.method();
    }

}
//局部内部类无法使用任何修饰符权限,也不能修饰为static

局部内部类详解:申明在类的代码块中或方法中的类就是局部内部类。

总结:局部内部类可以访问外部的任何成员

匿名内部类详解:

常用来直接继承抽象类,或者实现接口。匿名内部类只能使用一次

匿名内部类就是使用{}来实现或者继承某一个类。

匿名类与其他类的不同就在于匿名,也就是没有名称。

Java中允许创建子类对象时,除了使用父类的构造方法外,还可以用类体。 匿名类就是一个没有类申明的类体,因为没有名称,所有匿名类不可以申明对象,但却可以创建对象。 ? 例如:

A是一个子类,那么下面的代码就是A的一个子类(匿名类)创建对象。

new A(){
匿名类的类体

};

由于匿名类是一个子类,所以和有一般子类的特征。可以继承父类的方法,同样也可以重写父类的方法。值得提醒的是,在使用匿名类时,一定是在某个类中直接用匿名类创建对象,因此匿名类必定是内部类,所以和其他匿名类一样可以访问外嵌类中的成员变量和方法,匿名类的类体中不可以什么。

static成员变量和static方法。

尽管匿名类没有申明的步骤,但可以在创建匿名对象时返回一个引用赋值给匹配参数。 ? 匿名类的常用方式是向方法的参数传值

//具体方法如下:abstract class Speak{
public abstract void speakHello();

}

class Student{
void f(Speak sp){
sp.speakHello();

}

}

public class AnonymousClassDemo {
public static void main(String[] args) {
Speak speak = new Speak(){
public void speakHello(){
System.out.println("大家好,祝工作愉快!");

}

};

speak.speakHello();

Student st = new Student();

st.f(new Speak(){
public void speakHello(){
System.out.println("I am a student, how are you");

}

});

}

}

上面代码的抽象类改成接口同样适用
————————————————
版权声明:本文为CSDN博主「摸鱼最爽」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_35964207/article/details/114144700


?

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-19 07:45:54  更:2021-09-19 07:46:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 6:39:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码