Java 静态内部类 学习教程

本文深入解析Java中的静态内部类概念,包括其定义、特点及如何访问外部类成员。阐述了静态内部类与非静态内部类的区别,以及如何在外部类中调用静态内部类的属性和方法。

静态内部类:

  1. 用static修饰的内部类,称为静态内部类,完全属于外部类本身,不属于外部类某一个对象

  2. static关键字的作用是把修饰的成员变成类相关,而不是实例相关

  3. 静态内部类可以包含静态成员,也可以包含非静态成员,但是在非静态内部类中不可以声明静态成员。

  4. 静态类内部不可以访问外部类的实例成员,只能访问外部类的类成员,即使是静态内部类的实例方法也不能访问外部类的实例成员,只能访问外部类的静态成员

  5. 外部类不可以定义为静态类,Java中静态类只有一种,那就是静态内部类,顶级类不能用static 修饰

  6. 外部类如何调用静态内部类中的属性和方法

  • 外部类可以通过创建静态内部类实例的方法来调用静态内部类的非静态属性和方法
  • 外部类可以直接通过“ 外部类.内部类.属性(方法)” 的方式直接调用静态内部类中的静态属性和方法
  1. 如何创建静态内部类实例
  • 在非外部类中:外部类名.内部类名 name = new 外部类名.内部类名();
  • 在外部类中:内部类名 name = new 内部类名();

代码例子:

public class StaticDome01 {
    private int a = 10;//实例成员
    private static int b = 20;//类成员

    static class StaticClass{
        public static int c = 30;
        public int d = 40;
        //类方法
        public static void print(){
            //下面代码会报错,静态内部类不能访问外部类实例成员
            //System.out.println(a);
     
            //静态内部类只可以访问外部类类成员
            System.out.println("静态内部类的静态方法,调用外部类类成员b");
            System.out.println("外部类类成员b="+b);
            
        }
        //实例方法
        private void Syso() {
            // TODO Auto-generated method stub

        }   
        
        //实例方法
        public void print01(){
            System.out.println("静态内部类的实例方法,调用静态内部类的实例方法");
            print();
        }
    }
}

测试类:

public class Text {
    public static void main(String[] args) {
        /*
         * 要想访问静态内部类的实例成员,需先创建实例对象,才可以调用,
         * 因为实例成员是属于实例的, 创建方法:外部类名.内部类名 name = new
         * 外部类名.内部类名()
         * 通过“ 外部类.内部类.属性(方法)” 的方式
         * 直接调用静态内部类中的静态属性和方法
         */
        StaticDome01.StaticClass st = new StaticDome01.StaticClass();
        //访问静态内部类的实例方法
        st.print01();
        //访问静态内部类的实例成员
        int i = st.d;
        System.out.println("非外部类调用静态内部类的实例成员d = "+i);
        //访问静态内部类的类成员
        int j = StaticDome01.StaticClass.c;
        System.out.println("非外部类调用静态内部类的类成员C = "+j);
        //访问静态内部类的类方法
        System.out.println("访问静态内部类的类方法:");
        StaticDome01.StaticClass.print();
    }
}

运行结果:
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值