java 学习4——面向对象高级

静态 static

Java中成员变量按照有无static 分为 类变量 实例变量

静态变量:有static 修饰 属于类 在计算机中只有一份 会被类的全部对象共享

静态变量是属于类的,只需要通过类名就可以调用:类名.静态变量

不能使用this 调用(在java中,this用于引用当前对象,可以在非静态方法中使用,指向正在调用该方法的对象,由于静态方法不属于任何对象,是类级别的方法)

实例变量是属于对象的,需要通过对象才能调用 对象.实例变量

实例变量(对象的变量):无static修饰,属于每个对象

static修饰成员方法:有static修饰的成员方法,属于类 调用 类名.方法

随着类的加载而加载的,不用创建对象 不可以出现this关键字

实例方法 无static修饰的成员方法,属于对象,调用时需要对象调用

需要创建对象才能调用 可以出现this关键字

工具类

一个类中的方法都是静态的,直接类名调用 可以把方法私有化

Static 应用 (代码块)

静态代码块 格式 static{} 特点:类加载时自动执行,由于类只会加载一次,所以静态代码块也只会执行一次

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

静态代码块不需要创建对象就能够执行

实例化代码块

格式:{}

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

作用:和构造器一样,都是用来完成对象的初始化的,例如“对实例变量进行初始化赋值

每次创建对象之前都会先执行实例化代码

Static 应用 单例设计模式

单例:只有一个实例,无论new几次返回的都是同一个实例

单例模式 - 饿汉式  立即需要吃东西,类加载,就已经实例化了

  1. 提供一个私有成员变量,类型为当前类,并且需要实例化(唯一次实例化)
  2. 提供一个私有的无参构造(在类外面不能通过new创建实例)
  3. 提供一个公共方法,用于获得唯一实例

优点:代码结构简单,容易理解   安全,可以保证最少有一个实例

缺点:不调用的化,实例也在,浪费资源

//单例模式- 懒汉式 类在加载后没有实例化,在需要(第一次使用)的时候进行实例化

  1. 提供一个私有的无参构造
  2. 提供一个私有成员变量,成员为当前类
  3. 提供一个类方法,如果每创建过实例,就new一个实例,再次new类时就返回刚刚创建的实例

优点:延迟加载,需要的时候再加载,节约空间

缺点:不安全,可能会出现多个实例

继承

基本语法:public class 子 extends 父亲

特点:子类能继承父亲的非私有成员(成员变量,成员方法) 

每一个子类只能有一个父亲,但可以多层继承

好处:提高代码的复用性

权限修饰符

Public 公共的 private 私有的 protected 受保护的 缺省的(不写修饰符)

权限修饰符是用来限制类的成员(成员变量,成员方法,构造器)

权限修饰符访问范围:

Java 语言只支持单继承,不支持多继承,但是可以多层继承

Object类是所有java所有类的祖宗

方法重写

什么是方法重写:当子类觉得父类方法不好用,或者无法满足父类需求时,子类可以重写一个方法名称,参数列表一样的方法,去覆盖父类的方法这就是方法重写

重写注意事项

  1. 子类重写父类方法时,访问权限必须大于或者等于父类的方法的权限
  2. 重写方法的返回值,必须小于或等于父类方法的返回值的范围
  3. 私有方法,静态方法不能被重写,重写会报错

子类中访问成员的特点

原则 在子类中访问其他成员,依据就近原则

子类中构造器的特点

this:在当前类的构造方法,调用当前类的另一个构造方法,如this(参数列表)

super:在当前的构造方法,调用当前类父类的构造方法 super(参数列表)

注意:

使用this/super 调用构造方法,必须放在构造方法的第一行

如果存在父子类,构造方法的第一行默认super()

子类访问构造器的应用场景

子类不想使用默认的super() 方法调用父类构造器,还可以手动使用super(参数) 调用父类有参构造器

会顶掉默认的super()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值