面向对象的封装和构造方法以及this的另一种用法:this()

类方法、封装

掌握类方法的声明与调用
理解方法调用栈
理解方法重载
理解构造器

返回类型:方法声明必须包括返回值的类型,如果方法不需要返回一个值,就使用void,一个方法只能返回一个类型。
形参数列表:在方法名的后面必须是用一对()括起来的形式参数列表
注意:Java里面只有值传递

方法重载(overload)
当一个类有多个同名但是有不同参数列表的方法时,就是方法重载。
在一个类当中拥有相同的行为,但是不同的实现这属于面向对象4大特征当中的多态。
四大特征:
封装(基础,是其他三个特征的基础)
继承(复用)
多态(多样)
抽象(设计与问题实现的分离)

ECLIPSE下可以自动生成访问器和修改器
鼠标右键选择sourse,找到generate getters and setters,可一键生成严格按照命名规范的get/set方法,除了Boolean类型的属性,Boolean 类型的属性的get方法,在eclipse 当中生成为is开头的方法,由于历史原因,大部分框架不愿意遵循这一点,只支持get开头的方法,所以需要手动修改is为get。

JDK8之前,只能实现当前对象访问当前对象的私有属性可以直接调用,任何其他对象(就算同一类型的其他对象也不行)
JDK8之后,作了修正,不仅能够做到当前对象访问当前对象的私有属性可以直接调用,同时当前对象如果要操作同类型其他对象的私有属性也可以直接调用。

封装(基础)

封装其实分为
(类的定义:属性,行为,关联关系)
|
|
(信息隐藏) 1、访问修饰符(public/private);
注:遇到变量属性,可以无脑写成private,
只有常量属性无脑定义为public。
2、方法本身 {1、get/set方法隐藏属性;2、算法实现 }

如果要在外部操作私有的属性,那么应该提供两个方法:

访问器 和 修改器
访问器是专门用于让外部获取某个属性的值—取值;
修改器是专门用于让外部修改某一属性的值—赋值。
访问器书写规范:(get方法)
public 要获取的属性的数据类型 get属性名(){
return 该属性的值;
}
例:public String getName(){
return this.name;
}
修改器书写规范:(set方法)
public void set属性名(该属性类型 该属性名){
this.属性名 = 该属性名;
}
例:public void setName(String name){
this.name = name;
}
那么好处是什么呢?
安全灵活性:可以对get或set取值赋值前加一个判断,来判断是否需要给它赋值或取值。
为什么要设计get/set方法的方式替换把属性直接设计为public?
1、单独提供get或set,可以让某一个属性只读或只写;
2、可以在get或set方法当中对属性进行验证;
3、可以隐藏类当中的属性的设计(属性数据)结构;

通过公共的get和set方法来提供访问或修改,这样的好处是更大的灵活性,以及更好的封装效果。

构造方法(构造器)constructor

作用:产生对象
语法
访问修饰符 类名(形参列表){
实现指令;
}
特点
1、没有返回类型,连void都没有;
2、方法名必须是类名;
3、如果在一个类当中程序员没有自定义构造方法,那么编译器会自动增加一个公共无参构造;
4、如果在一个类当中拥有了一个自定义构造方法,那么编译器就不会产生公共无参构造;
5、构造方法支持重载,也就是说一个类可以拥有多个构造方法,但参数列表不同,即个数、类型、顺序。

Java标准类的书写规范
在95年的SUN公司的Java白皮书当中给出了一种Java类的标准写法,凡是符合这种写法的类就被称为Java标准类,英文叫做“JavaBean”,也叫做“POJO”.—Plain And Old Java Object
其规范包括(后续补充):
1、必须要有公共的无参构造;
2、必须为私有属性提供“符合命名规范“的get/set方法;

构造方法所执行的内容不仅仅是在它的方法实现体中所书写的代码,当我们执行new构造方法()的时候,它的执行步骤是 :
1、首先在内存当中划分存放对象索需要的空间—JVM自行完成,与我们代码无关;
2、然后再在该空间划分属性的具体存放位置—JVM自行完成
3、再然后对这些属性进行初始化,如果在属性定义的语句中没有给初值,那么基本类型为0,引用类型为null;如果给了初值,那么就以给定的初值为属性值—JVM自行完成
4、最后执行我们在构造方法当中书写的代码。

1-3的动作才是真正的产生对象,而留给我们在构造方法里面写的代码主要是为了完成第四步。而第四步往往是根据具体使用的问题域对新创建的对象进行状态初始化。

this关键字的另一个用法

this( )
含义:在一个类当中,如果有多个构造方法,且多个构造方法有复用的代码,那么当A构造需要调用B构造的时候用this( );让一个构造方法能够调用本类的其他构造,从而达到构造方法的代码共享。
语法:只能写在构造方法当中且必须是第一句

总结:this()允许在一个构造方法中调用本类的另外一个构造方法,但是:
1、this()并不会再产生一个新对象,只是共享第二个构造体当中的代码;
2、添加了this()的构造方法不能形成循环调用或递归等效果;
3、this()会通过实参和形参的匹配,决定调用本类的哪个构造方法;
4、this()只能写在构造方法里且只能是第一句;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值