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

Java中的静态类和非静态类

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

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

Java中的静态类和非静态类

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

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

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

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

 

上一篇:浅谈C# 多态


下一篇:Java语言基础-面向对象三大特征(多态性)