java 静态 非静态_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、静态类只能直接定义在外部类里面:

ebea00b068e9ee06fece0312174a2330.png

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

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

6e5411ed940d09049011478e6c3ed887.png

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

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

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

public static class Eat {//正确

static int age;

}

标签:Java,定义,静态,Eat,static,静态方法,class

来源: https://blog.csdn.net/weixin_45104211/article/details/98640693

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值