JavaSE — 面向对象(上)

一、类和对象
  • 构造器不能定义返回类型,也不能使用void声明,因为构造器的返回值是隐式的,有返回值,返回该类的实例
  • this关键字总是指向调用该方法的对象

    最大的作用就是,让类中的一个方法调用类中的另一个方法或实例变量,而不需要new一个对象(当有些局部变量和成员变量不重名时,this可以省略不写)

二、方法
  • 方法是类或者对象行为特征的抽象,方法必须属于类或者对象
  • 执行方法时,必须以类.方法或者对象.方法来进行调用,之所以同一个类中,可以直接进行方法调用,如果是普通方法,是因为省略的this关键字,如果是static修饰的方法,是因为默认使用类作为调用者
方法重载
  • 同一个类里,多个同名方法,形参列表不同
  • 方法的返回值不能作为区分重载的方法,是因为重载方法的返回值,可以相同,也可以不同
三、成员变量和局部变量
  • 类变量生命周期和类一样,实例变量周期和对象一样

  • 类在使用前需要经过一下步骤

  • 局部变量

    局部变量定义后,要经过显示的初始化才能使用,因为系统不会为局部变量执行初始化(内存空也未分配)

    不属于方法或者实例,存放在栈内存中,随方法调用完成而结束

  • 变量的使用规则

    能使用作用域小的就使用作用域小的,例如图方便使用成员变量代替局部变量,作用域在整个对象,造成两个坏处:

    1)、增大了变量的生存时间,浪费内存开销

    2)、扩大了变量作用域,不利于提高程序的内聚性

四、隐藏和封装

不同修饰符,访问控制级别

同一个类中同一个包中子类中全局范围
private
default
protected
public
五、构造器

构造器是一个特殊的方法,用于创建实例时执行初始化

  • 构造器是创建Java对象的途径,但是创建Java对象不是完全由构造器负责

    因为当程序调用构造器时,系统会先为对象分配内存,并执行默认的初始化,也就是说在构造器之前,对象就存在了,只是不能被外部访问,只能在构造器中通过this来引用,在通过构造器的隐式返回值返回该对象

  • 构造器重载中,如果一个构造器包含另一个构造器,可以通过this关键字进行调用

六、类的继承

Java类的继承通过extends关键字实现

1、重写
  • 遵循“两同两小一大”规则

    两同:方法名相同、形参列表相同

    两小:子类返回值类型和异常比父类小或相等

    一大:子类方法访问权限比父类更大或者相等

2、super关键字
  • 作用:可以在子类中调用父类被覆盖的实例方法

  • 当程序创建一个子类对象时,除了会为子类定义的实例变量分配内存,子类继承父类的所有实例变量也会分配内存,即使同名

3、调用父类构造器
  • 子类不会获得父类的构造器,但是可以在子类里通过super关键字调用父类构造器初始化代码(super必须放在第一行)

  • 子类调用父类构造器不同情况

    1)、子类super调用父类,则根据super传参先调父类对应构造方法

    2)、子类this调用另一个构造,则在调用另一构造时,先调另一个构造的父类

    3)、super 和 this 都没有,系统在执行子类构造前,也会先调父类无参构造方法

  • 不管子类哪种方法,都会调用父类构造方法,而且执行父类方法时,也会向上调父类的父类等,一直到java.lang.Object类的构造,所以最先执行的总是Object的构造方法

七、多态
  • Java 引用变量有两个类型:编译时类型运行时类型

  • 编译时类型由声明的类型决定,运行时类型由实际赋值给变量的对象决定,当两种类型不一致时,就可能出现多态

  • 也就是父类引用指向子类对象,调用相同的父类方法时,有不同的子类方法实现

八、初始化块
1、初始化块

初始化块和构造器功能类似,可以对Java对象进行初始化操作

作用:可以将对象相同的初始化处理代码(无需参数),提取到初始化块中,统一进行初始化,提高代码的复用和可维护性

初始化块,只有static修饰符,即静态初始化块

  • 初始化块没有名字,也没有方法,所以不能通过类和对象进行调用
  • 只能在创建Java对象时隐式执行,而且是在构造器之前执行
  • Java对象加载 ——> 实例变量分配内存 ——> 初始化(先执行初始化块和声明实例变量是的初始值,然后再是构造器的初始化)
  • 初始化块,在Javac编译时就会被还原到每个构造中,且在最前面
2、静态初始化块(static)
  • 静态初始化块是对类进行初始化,在创建对象之前,所以不能对实例变量进行初始化处理
  • 和普通初始化块类似,在执行子类静态初始化块之前,会先执行父类的静态初始化块,一直向上,直到java.lang.Object
3、初始化顺序
  • 父类的静态变量/静态初始化块最先执行
  • 变量和初始化谁先执行,取决于先后顺序
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值