java 如何将局部对象属性全部赋默认值_面向对象和封装

1.面向对象

面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲历亲为,详细处理每一个细节。

面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,帮我做这件事。

面向对象的语言中,包含了三大基本特征,即封装,继承和多态。

2.类和对象的关系

  • 类:是一组相关属性行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述类事物。

属性:就是该事物的状态信息。

行为:就是该事物能够做什么。

  • 对象:是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为。

关系:类是对一类事物的描述,是抽象的。

              对象是一类事物的实例,是具体的。

类是对象的模板,对象是类的实体。

3.类的定义

事物与类的对比:

现实世界的一类事物:

属性:事物的状态信息。

行为:事物能够做什么。

Java中用class描述事物也是如此:

成员变量:对应事物的属性

成员方法:对应事物的行为

类的定义格式

public classClassName(){

//成员变量

//成员方法

}

定义类:就是定义类的成员,包括成员变量成员方法

成员变量:和以前定义变量几乎是一样的,只不过是位置发生了改变。在类中,方法外

成员方法:和以前定义方法几乎是一样的,只不过static去掉

注意事项:

  1.   成员变量是定义在类当中,方法外边的。

  2.   成员方法不要写static关键字。

4.对象的创建及其使用

通常情况下,一个类并不能直接使用,需要根据类创建一个对象,才能使用。

  1.  导包

也就是指出需要什么类,在什么位置。

格式:import 包名称.类名称;

import demo01.Student;

 2.创建

格式:类名称对象名 = new 类名称();

  Student stu = new Student();

    3. 使用

分为两种情况:

使用成员变量:对象名.成员变量名

使用成员方法:对象名.成员方法名(参数)

也就是想用谁,就用对象名.谁

5.一个对象的内存图

c1b89e088f348f5450aacad0a2477728.png

6.两个对象使用同一个方法的内存图

01f2e6b295c7365fbde4b4c54244647a.png

7.两个引用指向同一个对象的内存图

c03dd262a6977c7aaf15e3d6f1fa251e.png

8.使用对象类型作为方法的参数

36ba670eb7f0fb3673eac8a89841e260.png

9.使用对象类型作为方法的返回值

77af103ef8abd8fd01fa2935479e68f0.png

10.成员变量和局部变量的区别

①  定义的位置不一样【重点】

局部变量:在方法的内部

全局变量:在方法的外部,直接写在类中

②  作用范围不一样【重点】

局部变量:只有在方法中才能使用,出了方法就不能再用

全局变量:整个类中都能使用

③  默认值不一样【重点】

局部变量:没有默认值,如果想要使用,必须手动进行赋值

全局变量:如果没有赋值,会有默认值,规则和数组一样

c12c2ddb2068b86e6b671a326820b80c.png

④  内存的位置不一样

局部变量:位于栈内存

全局变量:位于堆内存

⑤  生命周期不一样

局部变量:随着方法进栈而诞生,随着方法出栈而消失

全局变量:随着对象创建而诞生,随着对象被垃圾回收而消失

11.面向对象的三大特征之封装性(封装,继承,多态)

封装性在Java中的体现:

1>方法就是一种封装

2>关键字private也是一种封装

封装就是将一些细节信息隐藏起来,对于外界不可见。

12.private关键字的作用及使用

问题描述:定义Person的年龄时,无法阻止不合理的数值被设置进来。

9c1654e646816bf9b8785beb47995e35.png

解决方案:用private关键字将需要保护的成员变量进行修饰。

一旦使用了private进行修饰,那么本类当中仍然可以随意访问,但是,超出了本类范围之外就不能再直接进行访问了。

间接访问private成员变量,就是定义一对儿Getter/Setter方法。

必须叫setXxx或者getXxx命名规则,

对于Getter来说,不能有参数,返回值类型和成员变量对应,

对于Setter来说,不能有返回值,参数类型和成员变量对应。

对于基本类型当中的boolean值,Getter方法一定要写成isXxx的形式,而setXxx规则不变。

13.this关键字的作用

当方法的局部变量和类的成员变量重名时,根据“就近原则”,优先使用局部变量。

如果需要访问本类当中的成员变量,需要使用格式:

this.成员变量名

通过谁调用的方法,谁就是this。

14.构造方法

构造方法时专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法。

格式:

public 类名称(参数类型参数名称){

       方法体

}

注意事项:

1.    构造方法的名称必须和所在的类名称完全一样,就连大小写也要一样

2.    构造方法不要写返回值类型,连void也不写

3.    构造方法不能return一个具体的返回值

4.    如果没有编写任何构造方法,那么编译器将会默认赠送一个构造方法,没有参数,方法体,什么事都不做。

public Student(){}

5.    一旦编写了至少一个构造方法,那么编译器将不再赠送

6.    构造方法也是可以重载的(重载:方法名称相同,参数列表不同)

78dfcee17ad27aa37637cc95cf18122c.png

构造方法四部分:

成员变量,无参构造方法,全参构造方法,Getter/Setter方法

15.定义一个标准的类

一个标准的类通常要有下面四个组成部分:

  1.     所有的成员变量都要使用private关键字修饰

  2.     为每一个成员变量编写一对儿Getter/Setter方法

  3.     编写一个无参数的构造方法

  4.     编写一个全参数的构造方法

这样标准的类也叫Java Bean

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【练习题】01.类的成员变量 猜数字游戏 一个类A有一个成员变量v 有一个初值100。定义一个类 对A类的成员变量v 进行猜。如果大了则提示大了 小了则提示小了。等于则提示猜测成功。 【练习题】02.类的成员变量 请定义一个交通工具(Vehicle)的类 其中有: 属性 速度(speed) 体积(size)等等 方法 移动(move()) 设置速度(setSpeed(int speed)) 加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象 并通过方法给它初始化sp eed,size的值 并且通过打印出来。另外 调用加速 减速的方法对速度进行改变。 【练习题】03.类的成员变量与方法、构造方法 在程序中 经常要对时间进行操作 但是并没有时间类型的数据。那么 我们可以自己实现 一个时间类 来满足程序中的需要。 定义名为MyTime的类 其中应有三个整型成员 时 hour 分 minute 秒 second 为了保 证数据的安全性 这三个成员变量应声明为私有。 为MyTime类定义构造方法 以方便创建对象时初始化成员变量。 再定义diaplay方法 用于将时间信息打印出来。 为MyTime类添加以下方法 addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。 【练习题】04.构造方法 编写Java程序 模拟简单的计算器。 定义名为Number的类 其中有两个整型数据成员n1和n2 应声明为私有。编写构造方法 予n1和n2初始值 再为该类定义加 addition 、减 subtration 、乘 multiplication 、 除 division 等公有成员方法 分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象 调用各个方法 并显示计算结果。 【练习题】05.构造方法 编写Java程序 用于显示人的姓名和年龄。 定义一个人类 Person 该类中应该有两个私有属性 姓名 name 和年龄 age 。定义构造 方法 用来初始化数据成员。再定义显示 display 方法 将姓名和年龄打印出来。 在main方法中创建人类的实例 然后将信息显示。 【练习题】06.get方法和set方法 定义一个类 该类有一个私有成员变量 通过构造方法将其进行初值 并提供该成员的g etXXX()和setXXX()方法 提示 假设有private String name。则有 public void setName(String name){ this.name = name。 } public String getName(){ return this.name。 } 【练习题】07.构造方法与重载 为"无名的粉"写一个类 class WuMingFen 要求 1.有三个属性 面码:String theMa 粉的分量(两) int quantity 是否带汤 boolean likeSoup 2.写一个构造方法 以便于简化初始化过程 如 WuMingFen f1 = new WuMingFen("牛肉",3,true)。 3.重载构造方法 使得初始化过程可以多样化 WuMingFen f2 = new WuMingFen("牛肉",2)。 4.如何使得下列语句构造出来的粉对象是酸辣面码、2两、带汤的 WuMingFen f3 = new WuMingFen()。 5.写一个普通方法 check() 用于查看粉是否符合要求。即 将对象的三个属性打印在控 制台上。 【练习题】08.构造方法的重载 定义一个名为Vehicles 交通工具 的基类 该类中应包含String类型的成员属性brand 商 标 和color 颜色 还应包含成员方法run 行驶 在控制台显示"我已经开动了" 和showI nfo 显示信息 在控制台显示商标和颜色 并编写构造方法初始化其成员属性。 编写Car 小汽车 类继承于Vehicles类 增加int型成员属性seats 座位 还应增加成员方 法showCar 在控制台显示小汽车的信息 并编写构造方法。 编写Truck 卡车 类继承于Vehicles类 增加float型成员属性load 载重 还应增加成员 方法showTruck 在控制台显示卡车的信息 并编写构造方法。 在main方法中测试以上各类。 【练习题】09.构造方法与重载 定义一个网络用户类 要处理的信息有用户ID、用户密码、email地址。在建立类的实例 时 把

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值