java静态类和非静态类_java静态类与非静态类的区别

所谓静态,指以static关键字修饰的,包括类,方法,块,字段。

非静态,指没有用static 修饰的。

静态有一些特点:

1.全局唯一,任何一次的修改都是全局性的影响

2.只加载一次,优先于非静态

3.使用方式上不依赖于实例对象。

4.生命周期属于类级别,从JVM 加载开始到JVM卸载结束。

关于静态内部类(嵌套类)和非静态内部类的区别,

(1)内部静态类不需要有指向外部类的引用。但非静态内部类需要持有对外部类的引用。

(2)非静态内部类能够访问外部类的静态和非静态成员。静态类不能访问外部类的非静态成员。他只能访问外部类的静态成员。

(3)一个非静态内部类不能脱离外部类实体被创建,一个非静态内部类可以访问外部类的数据和方法,因为他就在外部类里面。

/* 下面程序演示如何在java中创建静态内部类和非静态内部类 */

class OuterClass{

private static String msg = "GeeksForGeeks";

// 静态内部类

public static class NestedStaticClass{

// 静态内部类只能访问外部类的静态成员

public void printMessage() {

// 试着将msg改成非静态的,这将导致编译错误

System.out.println("Message from nested static class: " + msg);

}

}

// 非静态内部类

public class InnerClass{

// 不管是静态方法还是非静态方法都可以在非静态内部类中访问

public void display(){

System.out.println("Message from non-static nested class: "+ msg);

}

}

}

class Main

{

// 怎么创建静态内部类和非静态内部类的实例

public static void main(String args[]){

// 创建静态内部类的实例

OuterClass.NestedStaticClass printer = new OuterClass.NestedStaticClass();

// 创建静态内部类的非静态方法

printer.printMessage();

// 为了创建非静态内部类,我们需要外部类的实例

OuterClass outer = new OuterClass();

OuterClass.InnerClass inner = outer.new InnerClass();//这样new出来的

// 调用非静态内部类的非静态方法

inner.display();

// 我们也可以结合以上步骤,一步创建的内部类实例

OuterClass.InnerClass innerObject = new OuterClass().new InnerClass();

// 同样我们现在可以调用内部类方法

innerObject.display();

}

}

其实就是静态类不用先创建外部类。可以静态类看做外部类的静态变量,使用就不要外部类实例;而非静态就必须先实例化。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值