Java面向对象(day14-3.5)面向对象(下)

路线

在这里插入图片描述

P315 static 关键字

静态属性举例:System.out; Math.PI;
static可以用来修饰:属性、方法、代码块、内部类

  • 静态方法中,只能调用静态的方法或属性
  • 非静态方法中,既可以调用非静态的方法或属性,也可以调用静态的方法或属性
    • 在静态的方法内,不能使用this关键字、super关键字(有了对象才有this super)
    • 关于静态属性和静态方法的使用,大家都从生命周期的角度去理解。

P320 在开发当中如何确定一个属性和方法是否为static

P324 单例设计模式

  • 创建型模式
  • 行为型模式
  • 结构型模式
    单例模式
    所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例。

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

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

区分懒汉和饿汉单例模式

  1. 区分饿汉式 和 懒汉式
    饿汉式:
    坏处:对象加载时间过长。
    好处:饿汉式是线程安全的
    懒汉式:好处:延迟对象的创建。
    目前的写法坏处:线程不安全。—>到多线程内容时,再修改

单例模式的优点

在这里插入图片描述

单例的应用

在这里插入图片描述

P327 main方法的交互模式

  1. run configrations
  2. scanner
  3. cmd方式
    在这里插入图片描述

P330

  • 类的成员之四:代码块(或初始化块)
  1. 代码块的作用:用来初始化类、对象
  2. 代码块如果有修饰的话,只能使用static.
  3. 分类:静态代码块 vs 非静态代码块
  4. 静态代码块
    内部可以有输出语句
    随着类的加载而执行,而且只执行一次
    作用:初始化类的信息
    如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行
    静态代码块的执行要优先于非静态代码块的执行
    静态代码块内只能调用静态的属性、静态的方法,不能调用非静态的结构
  5. 非静态代码块
    内部可以有输出语句
    随着对象的创建而执行
    每创建一个对象,就执行一次非静态代码块
    作用:可以在创建对象时,对对象的属性等进行初始化
    如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行
    非静态代码块内可以调用静态的属性、静态的方法,或非静态的属性、非静态的方法

P331 代码块的使用场景

当需要在类中属性进行赋值之前, 添加一些其他操作的时候常用代码块
(注意属性在初始化的时候,可以简单声明,也可以直接赋值,不能够直接操作)
在这里插入图片描述

P332

代码块的执行优先于构造器

对属性可以赋值的位置:

  • ①默认初始化
  • ②显式初始化/⑤在代码块中赋值(eg:父类当中静态代码块的执行、子类当中静态代码块的执行、父类当中非静态代码块的执行、父类当中构造器的执行、子类当中非静态代码块、子类当中构造器的执行)
  • ③构造器中初始化
  • ④有了对象以后,可以通过"对象.属性"或"对象.方法"的方式,进行赋值
  • 执行的先后顺序:① - ② / ⑤ - ③ - ④

P334 final关键字

  1. final可以用来修饰的结构:类、方法、变量
  2. final 用来修饰一个类:此类不能被其他类所继承。
  •  比如:String类、System类、StringBuffer类
    
  1. final 用来修饰方法:表明此方法不可以被重写
  •  比如:Object类中getClass();
    
  1. final 用来修饰变量:此时的"变量"就称为是一个常量
    4.1 final修饰属性:可以考虑赋值的位置有:显式初始化、代码块中初始化、构造器中初始化
    4.2 final修饰局部变量:
    尤其是使用final修饰形参时,表明此形参是一个常量。当我们调用此方法时,给常量形参赋一个实参。一旦赋值以后,就只能在方法体内使用此形参,但不能进行重新赋值。
    static final 用来修饰属性:全局常量

static 可修饰 方法、属性、代码块、内部类
final 可修饰 方法、属性、类
final static 可修饰 方法、属性

P324(2020.6.11)开始看的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值