黑马程序员——Java基础---面向对象(封装、构造函数、this关键字)--第5天--第67-73集

来源:互联网 发布:关于淘宝规则的变更 编辑:程序博客网 时间:2024/04/29 02:08
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

第5天-第67-73集

学习视频下载地址http://blog.csdn.net/abc784990536/article/details/42041151


3.3、对象的封装

1、 概念

       是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

2、 好处

        a)将变化隔离。

        b)便于使用。

        c)提高重用性。

        d)调高安全性。

3、 原则

        a)  将不需要对外提供的内容都隐藏起来。

        b)  把属性都隐藏,提供公共方法对其访问。

4、 封装的表现形式之一——private(私有)

        private关键字:权限修饰符;用于修饰类中的成员(成员变量,成员函数);私有只在本类中有效。

       常用之一:

                将成员变量私有化,对外提供对应的setget方法对其进行访问。提高对数据访问的安全性。

        如:我有一个人对象,而年龄这一属性我不想被对象访问,我就可以将其设为private

人物对象程序:

[java] view plaincopy
  1. class Person//描述人物对象的类  
  2. {  
  3.     private int age;//人对象的年龄属性  
  4.     public void setAge(int a)//提供访问方法,并判断是否有效  
  5.     {  
  6.         if(a>0 && a<130)  
  7.         {  
  8.             age = a;  
  9.             speak();  
  10.         }  
  11.         else  
  12.             System.out.println("feifa age");  
  13.     }  
  14.   
  15.     public int getAge()//提供获取方法  
  16.     {  
  17.         return age;  
  18.     }  
  19.     private void speak()//对象的说功能  
  20.     {  
  21.         System.out.println("age="+age);  
  22.     }  
  23. }  
  24.   
  25. class PersonDemo    
  26. {  
  27.     public static void  main(String[] args)  
  28.     {  
  29.         Person p = new Person();//创建人物对象  
  30.         p.setAge(-40);//利用封装提供的访问方法进行修改年龄属性  
  31.         p.speak();  
  32.     }  
  33. }  

 

3.4、对象知识——构造函数

1、 特点:

        a) 函数名与类名相同。

        b) 不用定义返回值类型。

        c) 不可以写return语句。

2、 作用:

        给对象进行初始化。

3、构造函数的小细节:

        当一个类中没有定义构造函数时,那么系统就会默认给该类加入一个空参数的构造函数。当在类中自定义了构造函数后,默认的构造函数就没有了。

4、构造函数和一般函数在写法上有不同。

在运行上也有不同:

        构造函数式在对象一建立就运行,给对象初始化。而一般方法是对象调用才执行,给是对象添加对象具备的功能。一个对象建立,构造函数只运行一次。而一般方法可以被该对象调用多次。

5、什么时候定义构造函数?

        当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。

6、构造代码块

       作用:给对象进行初始化。对象一建立就运行,而且优先于构造函数运行。

和构造函数的区别:

       构造代码块是给所以对象进行初始化。

       而构造函数是给对应的对象初始化。

构造代码块中定义的是不同对象共性的初始化内容。

 

3.5、对象知识点——this关键字

先看一个小程序:

[java] view plaincopy
  1. class Person  
  2. {  
  3.     private String name;  
  4.     private int age;  
  5.     Person(int age)//局部变量时age,成员变量也是age  
  6.     {  
  7.         this.age = age;//this能够很好区分  
  8.     }  
  9.     Person(String name)  
  10.     {  
  11.         this.name = name;//这里用this表示调用构造方法的对象  
  12.     }  
  13.     Person(String name,int age)  
  14.     {  
  15.         this.name = name;  
  16.         this.age = age;  
  17.     }  
  18.   
  19.     public void speak()  
  20.     {  
  21.         System.out.println("name="+name+"...age="+age);  
  22.         show();  
  23.     }  
  24.     public void show()  
  25.     {  
  26.         System.out.println(this.name);  
  27.     }  
  28. }  

 以上程序综合了构造函数和this的用法。看上去,是用于区分局部变量与成员变量同名情况。

       this代表它所在函数所属对象的引用。

       简单说:哪个对象在调用this所在的函数,this就代表哪个对象。

this的应用:

       当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。

       但凡本类功能内部使用到了本类对象,都用this表示。

this语句:

       用于构造函数之间进行互相调用。如:this(name);

        thi语句只能定义在构造函数的第一行。因为初始化要先执行。

this的概括总结:

        this的两种用法:1、用于区分同名变量的情况,说的成员和局部同名的时候;2、用于构造函数间调用。

注:一般函数不能直接调用构造函数,因为this语句不能用在一般函数中,只能用在构造函数间。


------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
0 0
原创粉丝点击