JAVA基础知识点(二)--封装,匿名,构造函数、代码块

一、封装

模拟问题

1.  描述Employee类。定义姓名,工号,性别的成员变量,和工作的方法。成员使用public修饰。

2.  创建Employee对象,对象.成员的方式进行赋值。最后该对象调用工作方法。

3.  总结:如果不使用封装,很容易赋值错误,并且任何人都可以更改,造成信息的         不安全。

4.  问题解决:使用封装

封装的步骤:

       1.使用private修饰需要被封装的属性。

       2.提供一个公共的方法设置或者获取该私有的成员属性。

                      命名规范:

                            set属性名();

                            get属性名();

疑问:封装一定要提供get或者set方法吗?

             不一定,根据需求而定的,比如某些信息只需要set方法。

规范:在现实开发中一般实体类的所有成员属性(成员变量)都要封装起来。

实体类:实体类就是用于描述一类事物的就称作为实体类。

工具类(Arrays数组的工具类):

封装的好处:

       1.提高数据的安全性。

       2.操作简单。(在实际开发中多人进行开发模块间需要进行调用的时候)

       3.隐藏了实现。

二、匿名对象类

匿名对象:没有引用类型变量指向的对象称作为匿名对象。

 

匿名对象要注意的事项:

         1.我们一般不会给匿名对象赋予属性值,因为永远无法获取到。

         2.两个匿名对象永远都不可能是同一个对象。

         3.匿名对象类只能使用一次,使用完后该对象就会消失。

匿名对象好处:简化书写。

匿名对象的应用场景:

         1.如果一个对象需要调用一个方法一次的时候,而调用完这个方法之后,该对象就不再使用了,这时候可以使用匿名对象。

         2.可以作为实参调用一个函数。

 

需求:调用Studentstudy方法。

普通方式:Student s = new Student();

s.study();

匿名内部类:new Student().study();

 三、构造函数:

构造函数的作用:给对应的对象进行初始化。

构造函数的定义的格式:

         修饰符  函数名(形式参数){

                 函数体...

         }

构造函数要注意的细节:

         1.构造函数是没有返回值类型的。

         2.构造函数的函数名必须要与类名一致。

         3.构造函数并不是由我们手动调用的,而是在创建对应的对象时,jvm就会主动调用到对应的构造函数。

         4.如果一个类没有显式的写上一个构造方法时,那么java编译器会为该类添加一个无参的构造函数的。

         5.如果一个类已经显式的写上一个构造方法时,那么java编译器则不会再为该类添加一个无参的构造方法。

         6.构造函数是可以在一个类中以函数重载的形式存在多个的。

 

疑问:创建对象时,jvm就会调用到对应的构造方法,那么我们以前没有学构造方法,那么以前创建对象时,jvm是否也会调用构造方法呢?如果有?构造方法从何而来呢?   

会调用, java编译器在编译的时候给加上去的无参构造方法。

 

jdk提供了一个java开发工具(javap.exe)给我们进行反编译的。

javap反编译工具的使用格式:                

                  javap-c -l -private类名

疑问: java编译器添加的无参构造方法的权限修饰符是什么?

                 与类的权限修饰是一致的。

 

构造函数与普通函数的区别:

         1.返回值类型的区别:

                  1.构造函数是没有返回值类型的,

                  2.普通函数是有返回值类型的,即使函数没有返回值,返回值类型也要写上void

         2.函数名的区别:

                  1.构造函数的函数名必须要与类名一致,

                  2.普通函数的函数名只要符合标识符的命名规则即可。

         3.调用方式的区别:

                  1.构造函数是在创建对象的时候由jvm调用的。

                  2.普通函数是由我们使用对象调用的,一个对象可以对象多次普通的函数,

         4.作用上的区别:

                  1.构造函数的作用用于初始化一个对象。

                  2.普通函数是用于描述一类事物的公共行为的。

 

以一个婴儿类为例:

class Baby{      

         intid; //身份证

         String  name; //名字

         //构造函数

         public  Baby(int i , String n){

                  id  = i;

                  name= n;

                  System.out.println("baby的属性初始化完毕!!");

         }

         //无参的构造函数

         publicBaby(){

                  System.out.println("无参的构造函数被调用了..");

         }

         //

         publicvoid cry(){

                  System.out.println(name+"哇哇哭...");

         }      

}

 四、构造代码块

构造代码块的作用:给对象进行统一的初始化。

构造函数的作用:给对应的对象进行初始化。

构造代码块的格式:  

         {

                 构造代码块

         }

注意:构造代码块的大括号必须位于成员位置上。

 

代码块的类别:

         1. 构造代码块。

         2. 局部代码块.   大括号位于方法之内。 作用:缩短局部变量的生命周期,节省一点点内存。(使用很少)

         3. 静态代码块  static

 例如:

class Baby{

         int id; //身份证

         String  name;  //名字

         {

                  cry();       //构造代码块...

         }

 

         //带参构造函数

         public  Baby(int i , String n){

                  id  = i;

                  name = n;

         }

        

         //无参构造方法

         public Baby(){

         }

 

         public void cry(){

                  System.out.println(name+"哇哇哭...");

         }      

}

class Demo4

{

         public static void main(String[] args)

         {

                  Baby b1 = new Baby(110,"狗娃");  // 狗娃狗剩铁蛋

                  new Baby(112,"狗剩");

                  new Baby();

         }

}

 三个对象都会使用构造代码块调用cry()方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值