黑马程序员——面向对象(二)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1.构造函数

       特点:a.函数名与类名相同

                b.不用定义返回值类型

                c.没有具体的返回值

       构造函数:构建创造对象时调用的函数。作用:给对象进行初始化。

       注意:

       a.默认构造函数的特点。

       b.多个构造函数是以重载的形式存在的。

一个类中如果没有定义过构造函数,那么该类中会有一个默认的空参数构造函数。如果在类中定义了指定的构造函数,那么类中的默认构造函数就没有了。

1.1.一般函数和构造函数的区别:

              a.构造函数:对象创建时,就会调用与之对应的构造函数,对对象进行初始化。

                一般函数:对象创建后,需要该函数功能时才调用。

              b.构造函数:对象创建时,只调用一次。

                一般函数:对象创建后,可以被调用多次。

       1.2.什么时候定义构造函数

              在描述事物时,该事物已存在就具备的一些内容,这些内容都定义在构造函数中。

 

构造函数可以有多个,用于对不同的对象进行针对性的初始化。

多个构造函数在类中是以重载的形式来体现的。

2.this关键字

       this是用来区别成员变量和局部变量重名的情况。

       this就是所在函数所属对象的引用。

 

this代表本类的对象。代表所在函数所属对象的引用。简单的说,谁调用this所在的方法,this就代表谁。

 

this的应用:用于区分同名成员变量和局部变量。

 

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

 

this也可以用于在构造函数中调用其他构造函数。但要注意,只能定义在构造函数的第一行。因为初始化动作要先执行。

3.static关键字

  用于修饰成员(成员变量和成员函数)。

被修饰后的成员具备以下特点:

       a.随着类的加载而加载

       b.优先于对象存在

       c.被所有对象所共享

       d.可以直接被类名调用。类名.静态成员

 

使用注意:

        a.静态方法只能访问静态成员

       b.静态方法中不可以写this,super关键字

       c.主函数是静态的。

 

非static修饰的变量可以称会实例变量或成员变量,使用static修饰的变量称之为类变量或静态变量。

注意:

a.      静态方法只能访问静态成员。非静态的可以访问静态的,也可以访问非静态的。

b.      静态方法中不可以写this,super关键字。因为静态优先于对象存在,而this,super都存在于对象创建之后。

c.      主函数是静态的。

 

实例变量(成员变量)和类变量(静态变量)的区别

1.      调用方式

静态变量可以通过类名调用,也可以通过对象名调用。这个变量属于类,用static修饰。

成员变量也称为实例变量,只能通过对象名调用。这个变量属于对象。

2.      数据的存储位置

静态变量存储在方法区中的静态区。所以也叫对象的共享数据。

成员变量存储在堆内存的对象中。

3.      生命周期

静态变量随着类的加载而存在,随着类的消失而消失。生命周期长。

成员变量随着对象的创建而存在,随着对象的消失而消失。

4.      与对象的相关性

静态变量是所有对象共享的数据。

成员变量是每个对象所特有的数据。

 

静态优势与缺陷:

优势:对蝗共享数据进行单独空间的存储,节省空间。没有必要每一个对象中都存储一份。可以直接被类名调用。

缺陷:生命周期长。访问出现局限性(只能访问静态)。

 

4. main主函数

       publicstatic void main(String[] args)

       主函数的特殊之处:

a.      格式是固定的。

b.      被JVM所识别和调用。

 

public:因为权限必须是最大的

static:不需要对象的,直接用主函数所属类名调用即可。

void:主函数没有具体的返回值。

main:函数名,不是关键字,只是一个JVM识别的固定名字。

String[] args:这是主函数的参数列表,是一个数组类型的参数,而且元素都是字符串类型。

args 原单词为arguments,参数之意。这里可以更改,不是唯一不变的。

String[]:字符串数组。

args:数组名 值为数组或空值。

 

在运行的时候,通过java命令给args数组赋值。

格式:  java  类名  字符串1 字符串2  字符串3  …,每一个字符串之间要用空格。

 

5.      静态

5.1什么时候使用静态?

a.静态变量

当分析对象中所具备的成员变量的值都是相同的。这时这个成员就可以被静态修饰。只要数据在对象中都是不同的,就是对象的特有数据,必须存储在对象中,是非静态的。如果是相同的数据,对象不需要做修改,只需要使用即可,不需要存储在对象中。

 

b.静态函数

函数是否用静态修饰,就参考一点,就是该函数功能是否有访问到对象中的特有数据。简单点说,从源代码看,该功能是否需要访问非静态的成员变量,如果需要,该功能就是非静态的,如果不需要,就可以将该功能定义成静态的。当然也可以定义成为非静态,但是非静态需要被对象调用,而仅创建对象调用非静态的的,没有访问特有数据的方法,该对象的创建是没有意义的。    

静态的应用:

第一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封闭。以便复用。

 

5.2静态代码块。

随着类的加载而执行。而且只执行一次。

作用:用于给类进行初始化。

 

5.3构造代码块

分类:局部代码块(定义在方法内的代码块)、构造代码块(定义在方法外的代码块,与方法同级)

作用:

局部代码块:控制代码块内变量的生命周期和作用域(使用范围),从而提高效率。

构造代码块:把所有构造方法中共同的内容定义在构造代码块中。

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

 

构造代码块对象一建立就运行,而且优先于构造函数执行。

作用:给对象进行初始化。

 

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

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


------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值