Java中的静态类和非静态类

一、静态类和非静态的定义

        1、非静态

            一、有名类

	class Eat{//不可以直接在main方法中使用   必须创建对象
		void sleep() {
			
		}
	}

             二、匿名类

	    Example example =new Example() {
		
	    };

        2、静态

             一、有名类

	static class Eat1 {//可以在main的静态方法中调用 
		void sleep1(){
			System.out.println("");
		}
	}

             二、匿名类

    static Example example1 =new Example() {//静态匿名内部类的使用
		
	};

        3、总结

            有名类中把static加到class前,匿名类的把static 加到表达式前面

二、静态类中需要注意:

        1、通过类名调用对象

public class Test {
	public static class Eat {
		void speak() {
			System.out.println("");
		}
	}
	public static void main(String[] args) {
		Eat eat  =new Test.Eat();
	}
}

        此处的 Test.Eat();就是通过类名调用对象

        2、静态类只能直接定义在外部类里面:

        非静态内部类的定义可以定义在内部类的方法、代码块中,而静态内部类只能在外部类的外部(即成员变量的位置)

        3、静态内部类仅能直接访问外部类的静态成员变量和方法,可以通过创建外部类的对象间接使用非静态的成员变量和方法。

        正如静态方法中可以直接调用静态方法,而只能通过对象来调用非静态方法和属性一样,此类型一致:

        静态方法和属性的内存分配和赋值从类运行的,所以一旦在静态的方法中使用非静态的成员变量(不经过创建对象),这时非静态变量【创建对象时执行】的执行不会分配空间,所以报错;

4、在静态类中可以定义静态属性,在非静态的类中不可以定义静态属性//静态方法中也不可定义静态属性(局部区域)

	public static class Eat {//正确
		static int age;
	}

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值