Java中的封装性及构造方法

一、封装性

面向对象包括三大特征:

封装 继承 多态

封装的好处:

1.封装之后,对于那个事物来说,看不到这个事物比较复杂的那一面,只能看到该事物简单的那一面。

复杂性封装,对外提供简单的操作入口。

2.封装之后才会形成真正的"对象",真正的"独立体"。

3.封装就意味着以后的程序可以重新使用。并且这个事物应该适应性比较强,在任何场合都可以使用。

4.封装之后,对于事物本身,提高了安全性。【安全级别高】

封装的步骤:

1.所有属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问

2.对外提供简单的操作入口,也就是说以后外部程序要想访问某属性,必须通过这些简单的入口进行访问:

------对外提供两个公开的方法,分别是set方法和get方法

------想修改某属性,调用set方法

------想读取某属性,调用get方法

3.set方法的命名规范:

public void setAge(int a){

age = a;

}

4.get方法的命名规范:

public int getAge(){

return age;

}

*** setter and getter方法没有static关键字

有static关键字修饰的方法怎么调用:类名.方法名(实参)

没有static关键字修饰的方法怎么调用:引用.方法名(实参)

public class User{

//属性私有化

private int age;

//setter

public void setAge(int a){

age = a;

}

//getter

public int getAge(){

return age;

}

}

public class UserTEst{

public static void main(String[] args){

//创建User对象

User user = new User();

//修改

user.setAge(-100);

//读取

System.out.println(user.getAge());

}

}

私有属性不能在外部直接访问,这就是封装

操作入口变成了只能通过set和get方法进行访问

在set和get方法执行过程中可以进行安全过滤

二、构造方法

关于java类中的构造方法:

1.构造方法又被称为构造函数/构造器/Constructor

2.构造方法语法结构:

【修饰符列表】 构造方法名 (形式参数传递){

构造方法体;

}

3.回顾普通方法的语法结构:

【修饰符列表】 返回值类型 方法名 (形式参数列表){

方法体;

}

4.对于构造方法来说,"返回值类型"不需要指定,并且也不能写void,

只要写上void,那么这个方法就成为普通方法了。

5.对于构造方法来说,构造方法的方法名必须和类名保持一致。

6.构造方法的作用:

构造方法存在的意义是,通过构造方法的调用,可以创建对象。

7.构造方法应该怎样调用?

* 普通方法的调用:方法修饰符列表中有static的时候:类名.方法名(实参列表)、

方法修饰符列表中没有static的时候:引用.方法名(实参列表);

*new 构造方法名(实参列表)

8.构造方法调用执行后,有返回值吗?

每一个构造方法实际上执行结束之后都有返回值,但是这个"return值;"这样的语句不需要写。构造方法

结束的时候java程序自动返回值。并且返回值类型是构造方法所在类的类型。由于构造方法的返回值类型就

是类本身,所以返回值类型不需要编写。

9.注释和取消注释: ctrl+/, 多行注释: ctrl+shift+/

10.当一个类中没有定义任何构造方法的话,系统默认给该类提供一个无参数的构造方法,这个构造方法被称

为缺省构造器。

11.当一个类显示的将构造方法定义出来了,那么系统则不再默认认为这个类提供缺省构造器。建议开发中手动的为当前类提供无参数构造方法。因为无参数构造方法太常用了。

12.构造方法支持重载机制。在一个类当中编写多个构造方法。这多个构造方法显然已经构成方法重载机制。

* 构造方法的作用:

1.创建对象

2.创建对象的同时,初始化实例变量的内存空间。【给实例变量赋值】

*成员变量之实例变量,属于对象级别的变量,这种变量必须先有对象才能有实例变量。

*实例变量没有手动赋值的时候,系统默认赋值,那么这个系统默认赋值是在什么时候完成的呢?

不是在类加载的时候,因为类加载的时候只加载了代码片段,还没来得及创建对象。所以此时实例变量没有初始化。

实际上,实例变量的内存空间是在构造方法执行过程当中完成开辟的。完成初始化的。

系统在默认赋值的时候,也是在构造方法执行过程当中完成的赋值。

实例变量默认值:

byte short int long 0

float double 0.0

bolean false

引用数据类型 null

实例变量是存储在JVM的堆内存java对象内部

对象和引用的概念:

对象:目前在使用new运算符在堆内存中开辟的内存空间称为对象

引用:是一个变量,不一定是局部变量,还可能是成员变量。引用保存内存地址,指向了堆内存当中的对象。

所有访问实例相关的数据,都需要通过"引用."的方式访问,因为只有通过引用才能找到对象。

只有一个空的引用,访问对象的实例相关的数据会出现空指针异常。

相关推荐
尘浮生4 分钟前
Java项目实战II基于微信小程序的电影院买票选座系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
hopetomorrow18 分钟前
学习路之PHP--使用GROUP BY 发生错误 SELECT list is not in GROUP BY clause .......... 解决
开发语言·学习·php
不是二师兄的八戒28 分钟前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php
小牛itbull28 分钟前
ReactPress vs VuePress vs WordPress
开发语言·javascript·reactpress
请叫我欧皇i37 分钟前
html本地离线引入vant和vue2(详细步骤)
开发语言·前端·javascript
闲暇部落39 分钟前
‌Kotlin中的?.和!!主要区别
android·开发语言·kotlin
爱编程的小生40 分钟前
Easyexcel(2-文件读取)
java·excel
GIS瞧葩菜1 小时前
局部修改3dtiles子模型的位置。
开发语言·javascript·ecmascript
chnming19871 小时前
STL关联式容器之set
开发语言·c++
带多刺的玫瑰1 小时前
Leecode刷题C语言之统计不是特殊数字的数字数量
java·c语言·算法