Java基础系列--07--类与对象、封装、构造方法

系列持续更新,敬请关注!
阅读原文体验更佳原文链接
Java基础系列01–Java介绍
Java基础系列02–常量变量
Java基础系列03–数据类型转换,运算符
Java基础系列04–选择语句,循环语句
Java基础系列05–数组
Java基础系列06–方法
Java基础系列–07–类与对象、封装、构造方法

面向对象思想

概述:Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。
面向对象思想总结:
1.面向过程:当要实现一个功能时,需要亲力亲为,处理每个细节
2.面向对象:当要实现一个功能时,不关心具体的实现步骤,只关心结果,找一个具有该功能的类,帮我们做事
3.面向对象的思想
(1)面向对象是基于面向过程的编程思想.
(2)面向过程:强调的是每一个功能的步骤
(3)面向对象:强调的是对象,然后由对象去调用功能
4.特点
(1)是一种更符合我们思考习惯的思想
(2)可以将复杂的事情简单化
(3)角色发生了转换,将我们从执行者变成了指挥者
(4)面向对象的语言中,包含了三大基本特征,即封装、继承和多态
举例说明:洗衣服
面向过程:拿出待洗衣服,放入盆中,倒入洗衣液,加水,揉搓一会,浸泡一会,揉搓衣服,清水洗净,拧干,晾衣服
面向对象:拿出待洗衣服,打开洗衣机,放入衣服,启动,晾衣服
很明显,面向过程强调步骤,面向对象强调对象(例子的对象就是洗衣机)。

类和对象

类的概念:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。
属性:该事物的状态信息(比如猫的属性:体重,年龄,颜色)
行为:该事物能够做的事(比如猫的行为:爬树,翻墙,抓老鼠)
对象的概念:对象指的就是你的另一半,哦,放错牒了。对象是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为。
还是以小猫为例是一类事物的一个实例。
属性:3kg,1years,black
行为:快速爬树,迅速翻墙,有效的抓老鼠

类与对象的关系

类是对一类事物的描述,是抽象的。
对象是一类事物的实例,是具体的。
类是对象的模板,对象是类的实体。

举个例子帮助理解。手机是一个类,手机的属性有:品牌,重量,颜色等,手机的行为有:打电话,发短信等。华为手机就是手机类的一个实例。它具备手机类的属性和行为,而且具体化,比如品牌属性是华为,重量1kg,冰川蓝。手机类是抽象的,是所有手机的属性和行为的集合,是摸不着的。而华为手机是具体的,是手机类中的一个实例。有些同学可能会说,那平常我的手机不是拿在手上的?手机类怎么会摸不着。其实我们手上的手机都是一个对象,因为它是具体。我的表达能力只能到这了,大家应该看的明白了,有疑问可以留言探讨。

类的定义

格式

public class 类名 {
//成员变量
//成员方法
}
定义类就是定义类的成员,包括成员变量和成员方法。
成员变量
:和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外。
成员方法:和以前定义几乎是一样的。只不过把static去掉
举例:学生类
public class Student{
//private后面再提,这里可以先不加
//private String name;
//private int age;
//成员变量
String name;
int age;
//成员方法
public void study() {
System.out.println(“学习”);
}
}

对象的使用

1.创建对象
类名 对象名 = new 类名();
以上面的学生类为例:Student student = new Student();
2.访问类中成员
对象名.成员变量;
对象名.成员方法();
还是以学生类为例:
student.name;
student.study();
成员变量的默认值:

在这里插入图片描述

成员变量和局部变量的区别
在这里插入图片描述

在类中的位置不同(重点)
成员变量:类中,方法外
局部变量:方法中或者方法声明上(形式参数)
作用范围不一样(重点)
成员变量:类中
局部变量:方法中
初始化值的不同(重点)
成员变量:有默认值
局部变量:没有默认值。必须先定义,赋值,最后使用
在内存中的位置不同(了解)
成员变量:堆内存
局部变量:栈内存
生命周期不同(了解)
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

封装—private关键字

**1.**private是一个权限修饰符,代表最小权限(四种权限修饰符,权限从小到大,private–>default–>protected–>public)。
2. 可以修饰成员变量和成员方法。
3. 被private修饰后的成员变量和成员方法,只在本类中才能访问。
上面的学生类中的成员变量没有使用private关键字修饰。所以可以直接使用对象名.属性名(student.name)访问成员变量。但private修饰后的成员变量只在本类中才能访问。可是一般我们都是其它类中创建对象,在方法中访问该类的方法和属性,怎么办呢?这里通过该类中的set/get方法进行访问。前面已经写过方法了。所以这里简单解释一下。Demo3类中无法直接访问Student类中private修饰的成员变量。调用Student类中的set方法,将传递的参数值赋给访问的成员变量。取值通过调用Student类中的get方法,get方法通过返回值形式将访问的成员变量值返回。
在这里插入图片描述

封装优化1—this关键字

大家可以看到上面Student类中set方法的参数是a,n,s等,看到这些参数我们不能明白,它代表的是什么。所以为了见名知意。把参数名改为和成员变量名一致。
在这里插入图片描述

我们看到参数名与成员变量名一样后,set方法赋值失败了。为什么呢?因为为两个名字相同,所以系统傻傻分不清楚?因为形参变量名与成员变量名重名,导致成员变量名被隐藏,方法中的变量名,无法访问到成员变量,从而赋值失败。所以,我们使用this关键字,来解决这个重名问题。
在这里插入图片描述

this代表所在类的当前对象的引用(地址值),即对象自己的引用。方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。方法中只有一个变量名时,默认也是使用this修饰,可以省略不写。

封装优化2—构造方法

构造方法包括:有参构造,无参构造
构造方法的写法上,方法名与它所在的类名相同。它没有返回值,所以不需要返回值类型,甚至不需要void。
注意

  1. 如果你不提供构造方法,系统会给出无参数构造方法。
  2. 如果你提供了构造方法,系统将不再提供无参数构造方法。
  3. 构造方法是可以重载的,既可以定义参数,也可以不定义参数。
    上面Demo3中的Student student = new Student();就是调用Student类的无参构造方法初始化student对象。接下来演示一下使用有参构造方法初始化对象。(下图中的Student类就是标准的JavaBean类)
    在这里插入图片描述

说明:为了避免耗费大家宝贵的时间。文章尽可能简短易懂。编程学习需要多动手,大家可以结合后台的demo(后台回复【示例】获取)理解文章,举一反三就更棒了。欢迎大家一起探讨问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值