`

面向对象编程之static关键字

阅读更多

目录

1. 概念

2. 静态属性

3. 静态方法

4. 静态块

5. 加载顺序

 

1. 概念

/**
 * 概念
 * 1、凡是静态的,先于对象存在的,与对象无关的
 * 2、凡是静态的,就是共享的
 * 
 * @author zhongaidong
 */
public class StaticDemo01 {
	public static void main(String[] args) {
		// 成员变量必须存在对象
		Fruit f1 = new Fruit();
		f1.n = 20;

		System.out.println(f1.num); // f1.num 自动转换成Fruit.num
		// 类属性、静态属性
		Fruit.num = 200;
		System.out.println(f1.num); // f1.num 自动转换成Fruit.num
//		System.out.println(Fruit.num);

		System.out.println(f1);

		// 改变静态属性
		// f1.num =1000;
		Fruit.num = 1000;
		Fruit f2 = new Fruit();
		System.out.println(f2);

	}
}

class Fruit {
	// 成员属性
	public int n;
	// 类属性、静态属性
	public static int num;

	public void test(int num) {
		// System.out.println(Fruit.num);
		System.out.println(num);
	}

	// 构造器
	// 成员方法
}

 2. 静态属性

/**
 * 静态属性
 * static +属性: 静态属性 ,类属性  -->可以用于计数 、自动编号
 * 
 * 注意:
 * 1. 为了增强可读性,避免混淆成员变量与类变量,一致推荐使用  类.静态属性,
 * 		不要使用  对象.静态属性  来调用类属性 
 * 2. 当前类中, 类. 可以省略 ,如果 形参|局部变量 与静态变量同名,不要省略
 * 
 * @author zhongaidong
 */
public class StaticDemo02 {
	public static void main(String[] args) {
		new Fruit2();
		new Fruit2();
		new Fruit2();

		System.out.println(Fruit2.num);
		Fruit2 f1 = new Fruit2();
		System.out.println(f1.no);
	}
}

class Fruit2 {
	String no;

	// 类属性、静态属性
	public static int num; // 共享

	Fruit2() {
		num++;
		no = "zad" + num;
	}

	// 构造器
	// 成员方法
}

 3. 静态方法

/**
 * 静态方法:static + 方法
 * 1. 静态方法  只能访问静态属性|信息,不能访问成员信息
 * 2. 成员方法:可以访问一切 
 * 3. 静态方法不能访问this,super
 * 4. 不能使用 new 类.静态方法() 来调用静态方法。
 * 
 * @author zhongaidong
 */
public class StaticDemo03 {
	public static void main(String[] args) {
		Fruit3.test();
		// 静态方法 Math.random();
		// new Math().random(); // 不能使用 对象|成员.访问
	}
}

class Fruit3 {
	String no;

	// 类属性、静态属性
	public static int num; // 共享

	Fruit3() {

	}

	// 构造器
	// 成员方法
	// 静态方法
	public static void test() {
		// System.out.println(this); //this也是对象信息
		num = 10;
		// no =2; //成员信息

		new Fruit3().no = "2";

	}
}

 4. 静态块

/**
 * 静态块:static + 块{}
 * 1. 位置:类中方法外
 * 2. 作用:加载类信息,且只加载一次。
 * 3. 优化:JUST IN TIME : 及时性。使用才加载,如果仅声明变量,不会加载。
 * 
 * @author zhongaidong
 */
public class StaticDemo04 {
	public static void main(String[] args) {
		Fruit f1 = null; // 如果仅声明变量,不会加载。
		System.out.println(f1); 
		f1.num = 100; // JUST IN TIME,使用即加载
		System.out.println(f1.num);
		
		// new Fruit(); // 使用即加载
		// new Fruit(); // 且只加载一次。
		 
	}
}

class Fruit4 {
	String no;

	// 类属性、静态属性
	public static int num; // 共享

	static {
		// 静态块 :加载类信息
		num = 1000;
		System.out.println("....加载类信息");

	}

}

 5. 加载顺序

/**
 * 加载顺序
 * 先声明变量,再一次加载。
 * 
 * @author zhongaidong
 */
public class StaticDemo05 {
	public static void main(String[] args) {
		System.out.println(Fruit5.num);
	}
}

class Fruit5 {
	// 
	// 1、public static Fruit f1 =new Fruit() ;

	public static int num = 20; // 共享
	public static Fruit5 f1 = new Fruit5();

	// 2、public static Fruit f1 =new Fruit() ;
	Fruit5() {
		num = 30;
	}

}

 

分享到:
评论

相关推荐

    面向对象基础-static关键字

    面向对象编程语言中,`static`关键字是一种非常重要的机制,它允许我们定义静态成员和静态方法,这些成员和方法不属于任何特定的对象实例,而是属于类本身。在Java中,`static`关键字主要用于以下三个方面:静态变量...

    Java面向对象(高级)- static关键字的使用

    Java中的`static`关键字是面向对象编程中的一个重要概念,它用于修饰类的成员变量和成员方法,以及静态初始化块。在Java中,`static`关键字具有以下几个核心特点和用途: 1. **类属性与类方法的设计思想**: 类的...

    020509_【第5章:面向对象基础】_this关键字与static关键字

    面向对象编程是Java的核心特性,本章节主要探讨了两个关键概念——`this`关键字和`static`关键字。在深入理解这两个概念之前,我们先要明白面向对象编程的基本思想:封装、继承和多态。 `this`关键字在Java中用于...

    第04章 面向对象(上) 10 Static关键字修饰属性和方法

    面向对象编程是Java语言的核心特性,...总之,`static`关键字在Java中扮演着至关重要的角色,它是理解和掌握面向对象编程的关键之一。通过学习和实践,我们可以更好地运用`static`,在编程中实现高效且易于维护的设计。

    java视频 static关键字

    在Java编程语言中,`static`关键字是一个非常重要的修饰符,它有多种用途,涉及到类、对象以及变量和方法的生命周期...通过学习这个视频教程,你将能够深入理解`static`的含义和使用场景,从而更好地进行面向对象编程。

    详谈PHP面向对象中常用的关键字和魔术方法

    在PHP的面向对象编程中,有多个关键字和魔术方法是经常被用到的,它们各有特定的用途和含义。下面将逐一详细介绍。 首先,关键字`final`在PHP面向对象编程中有着重要的作用。使用`final`关键字可以限定一个类不能被...

    面向对象的编程思想.rar

    在PHP这样的面向对象编程语言中,可以使用class关键字来定义类,用function关键字定义方法,用public、private、protected等关键字控制访问权限,使用extends关键字实现继承,使用interface关键字定义接口,使用__...

    Java面向对象编程PPT

    Java面向对象编程是Java语言的核心特性之一,它使得程序设计更加灵活、可维护性更强。在本PPT中,我们将深入探讨这一主题,以便你能够更好地理解和应用面向对象的编程理念。 1. 面向对象编程基础 - 类(Class):...

    Java面向对象的学习(关键字)

    在Java编程语言中,面向对象的概念是核心特性之一。本文将深入探讨`super`和`this`两个关键字的使用,以及访问权限修饰符和方法重写的重要知识点。 首先,`super`关键字代表父类的对象,它用于在子类中访问父类的...

    JAVA编程基础-05面向对象基础.pdf

    面向对象编程的基本概念包括抽象、对象、类、方法重载、构造器、this关键字和static关键字等。抽象是从事物中舍弃个别的非本质特征,抽取共同的本质特征,只考虑与问题域相关的信息,而忽略与问题域不相关的部分。...

    JAVA面向对象编程思想

    **概念**:封装是面向对象编程的核心之一,它指的是将数据(属性)和方法(行为)绑定在一起,形成一个独立的单元——类。通过这种方式,外部无法直接访问对象内部的数据,只能通过对象提供的方法来操作数据。 **...

    使用Java实现面向对象编程(Java OOP)

    在Java语言中,面向对象编程得到了广泛的应用,这使得Java成为企业级开发的首选语言之一。下面将详细阐述Java中的面向对象编程知识点。 1. 类与对象 - 类:类是创建对象的模板,定义了对象的属性(数据成员)和...

    matlab面向对象编程资料

    在MATLAB中,面向对象编程(Object-Oriented Programming,OOP)是一种强大的设计和实现方法,它允许程序员创建自定义的数据类型,并通过封装、继承和多态等原则来组织代码。《A Guide to MATLAB Object-Oriented ...

    java面向对象编程基础案例

    Java面向对象编程基础案例 Java是一种广泛使用的面向对象编程(OOP)语言,它以其强大的功能和跨平台性而闻名。面向对象编程的核心概念包括封装、继承和多态,这些都是Java设计的重要基石。 1. 封装:封装是将数据...

    Javascript面向对象编程

    ### JavaScript面向对象编程详解 #### 一、引言 JavaScript作为一种广泛使用的脚本语言,在Web开发领域占据着举足轻重的地位。尽管JavaScript本质上是一种基于原型的语言,但它也支持面向对象编程的一些特性,使得...

    Java中的static关键字共3页.pdf.zip

    在Java编程语言中,`static`关键字...因此,明智地使用`static`关键字,遵循面向对象设计原则,可以使Java程序更加健壮和灵活。在实际编程中,我们需要根据具体情况权衡`static`的使用,以达到最佳的代码组织和性能。

    JavaOOP-04-static关键字笔记.pdf

    Java中的`static`关键字是一个非常重要的概念,它在面向对象编程中扮演着核心角色。`static`关键字可以用于修饰变量、方法和代码块,每种修饰都有其特定的用途和意义。 首先,让我们来理解一下`static`修饰的变量,...

Global site tag (gtag.js) - Google Analytics