栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

面向对象 (八)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面向对象 (八)

活动地址:CSDN21天学习挑战赛

目录

关键字:static

单例设计模式


关键字:static


1,概述

static:静态的

            可以用来修饰  属性、方法、代码块、内部类

2,修饰属性

被static修饰的属性称为静态属性

静态变量:创建了类的多个对象,多个对象共享一个静态变量。

                  当通过某一对象修改静态变量时,会导致其他对象调用此静态变量时,调用的是修改后的静态变量。


非静态变量:创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性。

                     当修改其中一个对象的非静态属性时,不会导致其他对象中同样的属性值修改。

其他说明:

1、静态变量随着类的加载而加载。可以通过"类.静态变量"的方式进行调用

2、静态变量的加载要早于对象的创建

3、由于类只会加载一次,则静态变量在内存中也只会存在一份:存在方法区的静态域中

3,修饰方法

被static修饰的方法称为静态方法

1、随着类的加载而加载,可以通过"类.静态方法"的方式进行调用

2、静态方法中只能调用静态的方法或属性

      非静态方法中既可以调用非静态的方法和属性,也可以调用静态的方法和属性

4,static注意点

1、在静态方法内不能使用this和super关键字

2、关于静态属性和静态方法的使用,从生命周期的角度去理解

3、开发中如何确定一个属性是否要声明为static?

      属性可以被多个对象所共享,不会随着对象的不同而不同

4、 开发中如何确定一个方法是否要声明为static?

      操作静态属性的方法通常设置为static

5,举例

1、在静态方法内不能使用this和super关键字

public class Test {
	public static void main(String[] args) {
        Person.nation = "china";//静态变量随着类的加载而加载,可以通过"类.静态方法"的方式进行调用
        Person p1 = new Perosn();
        p1.name = "A";
        p1.age = 40;

        Person p2 = new Perosn();
        p2.name = "A";
        p2.age = 40;

        p1.nation = "CHN";
        System.out.println(p1.nation);//CHN
		System.out.println(p2.nation);//CHN

        Person.show();//可以通过静态类直接调用类中的静态方法
//        Person.eat();//静态类不能直接调用类中的非静态方法
    }
}
class Person{
	String name;
	int age;
	static String nation;

    public void eat() {
		//调用静态结构
		show();
		walk();
        System.out.println("吃饭");
	}
    public static void show() {
		//静态方法不能调用非静态结构
//		eat();//不能在静态方法中调用非静态方法
//		name = "TOM";//非静态属性也不能使用,因为show加载时  name属性还没有
		
		//可以调用静态结构
		System.out.println(Person.nation);
		walk();
	}
    //静态方法
	public static void walk() {
		System.out.println("走路");
	}
}

**

单例设计模式

1,概述

所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。

2,单例的饿汉式实现

public class Test {
	public static void main(String[] args) {
		Bank bank1 = Bank.getInstance();
		Bank bank2 = Bank.getInstance();
		
		System.out.println(bank1 == bank2);//true
	}
}


class Bank{
	
	//1、私有化类的构造器
	private Bank() {
		
	}
	//2、内部创建类的对象
	//4、要求此对象也必须声明为静态
	private static Bank instance = new Bank();
	
	//3、提供公共的静态方法  返回类的对象
	public static Bank getInstance() {
		return instance;
	}
}

3,单例的懒汉式实现

public class Test {
	public static void main(String[] args) {
		Bank bank1 = Bank.getInstance();
		Bank bank2 = Bank.getInstance();
		
		System.out.println(bank1 == bank2);//true
	}
}


class Bank{
	
	//1、私有化类的构造器
	private Bank() {
		
	}
	//2、先声明当前类对象,没有初始化
	//4、要求此对象也必须声明为静态
	private static Bank instance = null;	
	//3、声明public、static的返回当前类对象的方法
	public static  Order getInstance() {
		if (instance == null) {
			instance = new Bank();
		}
		return instance;
	}
}

4,区分饿汉式和懒汉式

饿汉式:

1、饿汉式是线程安全的

2、 对象加载时间过长

懒汉式:

1、目前写法线程不安全

2、延迟对象的创建,节省加载时间

提醒:在发布作品前请把不用的内容删掉(活动地址请保留)

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1039445.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号