Java面向对象

Java面向对象

成员变量

  • 在类体中定义的变量为成员变量,作用范围是整个类,只要在这个类中都可以访问到它。

  • 成员变量包括实例属性类属性。

  • 类属性从类被加载开始存在,直到系统完全销毁该类,类属性的作用域与该类的生命周期相同。

  • 实例属性则从类的实例被创建起开始存在,直到系统销毁该实例,实例属性的作用域与其对应的生命周期相同。

成员变量与局部变量的区别

  • 在类中的位置不同

​ 成员变量:在类之中,方法之外。

​ 局部变量:在方法或者代码块中,或者方法的声明上(即在参数列表中)。

  • 生命周期不同

​ 成员变量:随着对象的创建而存在,随着对象的消失而消失。

​ 局部变量:随着方法的调用或者代码块的执行而存在,随着方法的调用完毕或者代码块的执行完毕而消失。

  • 初始值

​ 成员变量:有默认初始值。

​ 部变量:没有默认初始值,使用之前需要赋值,否则编译器会报错。

this关键字

  • this关键字代表本身

  • this关键字主要用途

​ 用this代表自身类的对象(直接使用this、使用this引用成员变量、使用this调用成员方法)。

​ 用this在自身的构造方法内部调用其他的构造方法。

解决实例变量与局部变量同名的问题

在这里插入图片描述

  • 当方法中的局部变量与实例变量同名时,在方法中如果不使用this前缀调用实例变量,则在方法中默认调用方法中的局部变量(形参也是局部变量)。

面向对象的三大特征:

  1. 封装
    
  2. 继承
    
  3. 多态
    

封装

  • 封装是面向对象的三大特征之一。

  • 封装将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法实现对内部信息的操作和访问。

  • 封装是面向对象编程语言对客观世界的模拟,客观世界中的属性均被隐藏在对象内部,外界无法直接操作和修改。

一个良好的封装可以实现以下目的:

  1. 隐藏类的实现细节。
  2. 让使用者只能通过事先预定的方法访问数据,从而可以在该方法中加入控制逻辑,限制对属性的不合理访问。
  3. 可进行数据检查,从而有利于保证对象信息的完整性。
  4. 便于修改,提高代码的可维护性。

实现良好封装的途径:

  1. 隐藏对象的属性和实现细节,不允许外部直接访问。
  2. 暴露出方法,让方法控制对这些属性进行安全的访问和操作。
  3. 封装实际上有两个方面的含义:隐藏该隐藏的,暴露该暴露的。
  4. Java封装的实质:使用访问控制符private隐藏属性,以及public暴露方法。

Java访问控制符

在这里插入图片描述

static静态关键字

Java类的运行包括类加载和实例化两个阶段。

当一个类被加载至JAM中,静态成员会被初始化。

静态成员不属于某个对象,仅属于静态成员所在的类。

  • 被static修饰的成员即为静态成员。

​ 静态代码块

​ 静态属性

​ 静态方法

静态方法

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

  • 静态方法也可通过类名直接访问,也可通过对象名访问。

  • 静态方法中不能访问非静态的成员,如实例属性、实例方法。

  • 静态方法通常作为工具方法,因为静态方法不会因为实例的不同,而影响方法最终的执行效果。

静态代码块

  • 如果需要在类加载时执行某一操作,则可以使用静态代码块。

  • 静态代码不存在任何方法体中,它在Java虚拟机加载类时执行.

  • 如果类中包含多个静态代码块,则Java虚拟机将按照它们在类中出现的顺序依次执行。

  • 静态代码块只会被执行一次。

提问

  • 为什么需要静态代码块?什么场合需要用到静态代码块?

静态方法在类加载后,虽然在内存中已经分配了内存空间,但只有显式地调用静态方法时,该方法才会被执行。如果需要在类加载时执行某一操作,则可以使用静态代码块。

静态代码块

分析

  • 虽然main(方法是程序的入口方法,但该方法是在类加载完成后,由JVM虚拟机调用该方法。

  • 而静态代码块是在类加载时就执行。加载完静态代码块后,才执行main()方法。

总结

  • 变量可以分为成员变量和局部变量,成员变量是在类范围定义的变量,局部变量是在方法中定义的变量。

  • 成员变量分为类属性和实例属性两种,定义属性时没有static修饰符修饰的就是实例属性。类属性的作用域与该类的生命周期相同,例属性的作用域与其对应的实例的生命周期相同。

  • this关键字代表自身。

  • 封装将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法实现对内部信息的操作和访问。

  • Java访问控制符可见性范围由小到大为:private->default->protected->public。
    周期相同,例属性的作用域与其对应的实例的生命周期相同。

  • this关键字代表自身。

  • 封装将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法实现对内部信息的操作和访问。

  • Java访问控制符可见性范围由小到大为:private->default->protected->public。

  • 静态成员变量属于其所在类,被类中的所有实例共享,静态成员变量可通过类直接访问,也可通过类的实例访问。静态方法不能访问非静态的成员。

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值