首页 > 编程语言 >day10(javaSEPro)

day10(javaSEPro)

时间:2023-03-18 15:56:24浏览次数:36  
标签:父类 变量 对象 方法 day10 static 重写 javaSEPro

day10

static 关键字

static叫静态,只能修饰成员变量、成员方法,不能修饰类,也不能修饰局部的东西

static修饰成员变量

static修饰成员变量的特点:

  1. 被类的所有对象共享
  2. 可以通过类名调用,也可以通过对象名调用,推荐使用类名调用

注意:static成员变量执行时自动在堆里开辟空间存储static成员变量(无需创建对象就在堆里有空间)

类变量(静态变量):属于类,与类一起加载到内存,只加载一次在内存中只有一份,可以被类和类的所有对象共享

实例变量(对象变量):属于对象,每个对象中都有一份,只能用对象访问

如果某个数据只需要一份,其他所有对象都需要用到

,就可以使用类变量

注意:

在本类中调用类变量,类名可以省略不写,其他类中必须写类名

类变量一般都是使用public修饰

static修饰成员方法

类方法(静态方法)

用法:

类名.类方法

对象名.类方法

类方法最常见的应用场景是做工具类

工具类:工具类里面只有类方法没有成员变量,供开发人员调用方便,提高代码复用性,提高开发效率

私有化构造器(将构造方法设为private)可以禁止其他人创建对象,直接使用工具类名调用方法

static的注意事项

  • 类方法中可以直接访问类成员,不可以直接访问实例成员(因为调用类方法时候,可能并没有创建类的对象)

  • 实例方法中既可以直接访问类成员,也可以直接访问实例成员

  • 实例方法中可以出现this关键字,类方法中不可以出现this关键字

类方法如何访问实例成员?new 一个对象

静态代码块

格式:

static{

语句

}

特点:

类加载时候自动执行,由于类只会加载一次,所以静态代码也只会执行一次

作用:

完成类的初始化,例如:对类变量的初始化赋值

复杂类变量使用赋值时候可以用static代码块

注:idea 快捷键

ctrl+shift+R:搜索

实例代码块

格式:

{}

特点:每次创建对象时,执行实例代码块,并在构造器之前执行

作用:类中有多个构造方法,并且多个构造方法中有共性的代码时,可以使用实例代码块

static应用:单例设计模式

  • 设计模式可以帮我们解决开发中遇到的问题
  • 具体问题的最优解决方案

单例设计模式

解决问题:确保一个类只有一个对象

饿汉式单例模式

  • 加载类时,就创建对象

写法:

  • 类的构造器私有化
  • 定义一个类变量记住本类的一个对象
  • 定义一个类方法,返回对象
public class A{
	private A(){//类的构造器私有化
	
	}

	private static A a = new A();//定义一个类变量记住本类的一个对象(A是类变量(即静态变量),只会执行一次)
	
	public static A getA(){//定义一个类方法,返回对象
		return a;
	}
}

懒汉式单例模式

  • 拿对象时,才开始创建(延迟加载对象)

写法

  • 把类的构造器私有
  • 定义一个私有类变量用于存储对象
  • 提供一个类方法保证返回的是同一个对象
public class B{
    private B{
    }
    
    private static B b;
    public static B getB(){
        if(b==null){
        b = new B();
        }
        return b;
    }

}

使用频繁选择饿汉式

偶尔使用选择懒汉式

单例模式的应用场景

  • 任务管理器对象(ctrl+x可打开)

继承

使用extends关键字,让一个类和另一个类建立起父子关系

Java是单继承的,Java的类中不支持多继承,但是支持多层继承

特点

子类可以直接使用父类的非私有成员

好处

减少重复代码的编写

子类对象实际上是由子父类共同创建出来的

权限修饰符

四个权限修饰符

  1. private:只能本类
  2. default(缺省):本类、同一个包的类
  3. protected:本类,同一个包中的类、子孙类中
  4. public:任意位置

private < default < protected < public

方法重写

子类觉得父类中的某个方法不好用时,可以重写一个方法覆盖父类的方法。

重写后,方法的访问遵循就近原则。

就近原则:先子类局部范围找,再子类成员变量找,然后父类成员范围找,如果父类范围还没找到则报错

方法重写的注意事项

  • 使用override注解,他可以指定Java编译器,检查我们方法重写的格式是否正确,提高代码可读性
  • 子类重写父类方法时,访问权限必须大于或者等于父类该方法的权限(public>protected>default)
  • 重写的方法返回值类型,必须与被重写的方法返回值类型一样,或者范围更小(不是数值范围,子类重写方法返回值只能是父类方法返回值的子类或者本身)
  • 私有方法、静态方法不能被重写,如果重写会报错

方法重写实例

重写toString()方法

如果打印的是一个引用类型对象,println()方法底层会自动调用toString(),并且答应该方法的返回值

标签:父类,变量,对象,方法,day10,static,重写,javaSEPro
From: https://www.cnblogs.com/xkh-blogs/p/17230944.html

相关文章