浅谈java面向对象(类,封装,this,构造方法)

 更新时间:2017年06月11日 08:13:59   投稿:jingxian  
下面小编就为大家带来一篇浅谈java面向对象(类,封装,this,构造方法)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

无论面向对象还是面向过程, 这俩都是解决问题的思路而已, 只是角度不同.

面向过程:

强调解决问题的每一个步骤都亲力亲为,每一个细节都自己手动实现.

面向对象:

使用特定功能对象去解决特定的问题, 每一个细节不需要关注,只需要创建对应的对象即可.

面向对象是基于面向过程的

类和对象及他们的关系

类: 具有相同特征和行为(功能)的事物的统称 , 是一个抽象概念
对象: 这类事物中某个确定的个体

类和对象的关系

一个类可以创建多个对象 , 类是对象的抽象, 对象是类的实例.

描述一个事物----> 类

特征----> 成员属性(成员变量) 
行为(功能)---> 成员方法

类的创建格式:

修饰符 class 类名{

数据类型 成员变量名1;
数据类型 成员变量名2;
数据类型 成员变量名3;
...

成员方法1;
成员方法2;
成员方法3;
...
}

修饰符: public

类名: 标识符 见名知意

成员变量列表: 事物的特征 ,只写当前场景关注的特征,没必要把事物的所有特征全都写上 . 写法类似于定义变量

成员方法: 事物的行为(功能) 只写当前场景关注的行为(特征) 写法上类似于之前的定义方法, 区别在于此时写的话要去掉static

当一个类第一次使用的时候要载入到方法区 , 后续每一次再使用这个类 就不需要重复载入

成员变量和局部变量区别

1.定义的位置不同

局部变量: 定义在方法的内部
成员变量: 定义在类的内部, 方法的外部

2.在内存中的存放位置不同

局部变量: 局部变量存放在 栈区
成员变量: 成员变量存放在 堆区

3.生命周期不同

局部变量: 随着方法的调用而产生,随着方法的结束而消失 相对较短
成员变量: 随着对象创建而产生,随着对象数据回收而消失 相对较长

4.初始值不同

局部变量: 没有初始值, 使用之前必须进行赋值
成员变量: 有初始值, 引用类型 null, 整数 0 , 小数0.0 字符:空格, 布尔 false

封装性

封装是 面向对象的三大特征之一, 另外两个是继承 多态

类名:Person
属性:name ,age
方法:展示

封装好处: 提高程序的安全性

对属性封装的步骤:

1.使用private关键字修饰对应的属性 , 防止外界通过对象名.属性的方式直接访问属性

2.书写对应属性的set和get方法 , 给外界一个访问属性的通道

封装是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。

封装的原则:

将不需要对外提供的内容都隐藏起来。

把属性隐藏,提供公共方法对其访问。

成员变量private,提供对应的getXxx()/setXxx()方法

好处:

通过方法来控制成员变量的操作,提高了代码的安全性

把代码用方法进行封装,提高了代码的复用性

变量访问的就近原则:

当出现多个重名变量的时候, 目标代码使用的是离这行代码最近的那个变量

this可以解决的问题:

当局部变量和成员变量重名的时候, 想在特定的代码处访问成员变量, 就可以在目标行的变量名前面加this.

this只的是当前调用这个方法的对象

this 谁调用指的就是谁

构造方法

是一个方法. 作用: 给对象的数据赋值默认值

定义格式:

修饰符 方法名(参数列表){

若干条初始化语句

}

修饰符: public

方法名: 直接写类名

参数列表: 跟之前定义方法写形式参数一致

注意 构造方法 没有返回值类型

如果我们自己不手动写无参数的构造方法, 系统会默认提供一个,如果我们自己手动书写了无参的构造方法,

那系统就不会给提供,使用的时候直接使用我们自己写的构造方法

构造方法 也是方法 也可以进行重载

但凡我们手写了任意的构造方法, 系统就都不会给提供无参构造方法了 ,

当此时非要用无参的构造方法创建对象的时候, 必须自己手写无参的构造方法

以上这篇浅谈java面向对象(类,封装,this,构造方法)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringMVC使用@ExceptionHandler注解在Controller中处理异常

    SpringMVC使用@ExceptionHandler注解在Controller中处理异常

    这篇文章主要为大家介绍了SpringMVC使用@ExceptionHandler注解在Controller中处理异常示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • SpringBoot IDEA联不了网创建项目的3种方式(官网创建版、阿里云版、手工制作版)

    SpringBoot IDEA联不了网创建项目的3种方式(官网创建版、阿里云版、手工制作版)

    这篇文章主要介绍了SpringBoot IDEA联不了网创建项目的3种方式,主要包括官网创建版、阿里云版、手工制作版,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • JDK源码中一些实用的“小技巧”总结

    JDK源码中一些实用的“小技巧”总结

    这篇文章主要给大家总结介绍了关于JDK源码中一些实用的“小技巧”,文中通过示例代码介绍的非常详细,对大家学习或者使用jdk源码具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • RocketMQ获取指定消息的实现方法(源码)

    RocketMQ获取指定消息的实现方法(源码)

    这篇文章主要给大家介绍了关于RocketMQ获取指定消息的实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用RocketMQ具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • 一文搞懂Runnable、Callable、Future、FutureTask及应用

    一文搞懂Runnable、Callable、Future、FutureTask及应用

    一般创建线程只有两种方式,一种是继承Thread,一种是实现Runnable接口,在Java1.5之后就有了Callable、Future,这二种可以提供线程执行完的结果,本文主要介绍了Runnable、Callable、Future、FutureTask及应用,感兴趣的可以了解一下
    2023-08-08
  • Nacos动态配置管理机制方式

    Nacos动态配置管理机制方式

    这篇文章主要介绍了Nacos动态配置管理机制方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • SpringBoot读取yaml文件操作详解

    SpringBoot读取yaml文件操作详解

    YAML 是 “YAML Ain’t Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Java如何取掉json数据中值为null的属性字段

    Java如何取掉json数据中值为null的属性字段

    这篇文章主要介绍了Java如何取掉json数据中值为null的属性字段,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java实现插入排序算法可视化的示例代码

    Java实现插入排序算法可视化的示例代码

    插入排序的算法描述是一种简单直观的排序算法。其原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。本文将用Java语言实现插入排序算法并进行可视化,感兴趣的可以了解一下
    2022-08-08
  • Springboot+Hutool自定义注解实现数据脱敏

    Springboot+Hutool自定义注解实现数据脱敏

    我们在项目中会处理敏感数据时,通常需要对这些数据进行脱敏,本文主要使用了Springboot整合Hutool来自定义注解实现数据脱敏,感兴趣的可以理解下
    2023-10-10

最新评论