Java面向对象——类的成员

Posted shamao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面向对象——类的成员相关的知识,希望对你有一定的参考价值。

Java面向对象——类的成员

摘要:本文主要介绍了类的常见成员。

属性

属性称为成员变量,一般来讲不用赋值,因为有默认值,另外显式赋值没有意义会导致所有由此类创建对象都是此值。

默认值

Boolean类型成员变量的默认值是false。

Int类型成员变量的默认值是0。

Double类型成员变量的默认值是0.0。

String类型成员变量的默认值是null。

Char类型成员变量的默认值是\u0000。

类变量

类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外。

静态变量在程序开始时创建,在程序结束时销毁。

静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。

默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。

实例变量

实例变量声明在一个类中,但在方法、构造方法和语句块之外。

实例变量在对象创建的时候创建,在对象被销毁的时候销毁。

访问修饰符可以修饰实例变量。

实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息。

实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定。

局部变量

局部变量声明在方法、构造方法或者语句块中。

局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁。

访问修饰符不能用于局部变量。

局部变量只在声明它的方法、构造方法或者语句块中可见。

局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

方法

方法就是用来完成解决某件事情或实现某个功能的办法。

定义

在Java中,声明一个方法的具体语法格式如下:

1 修饰符 返回值类型 方法名(参数类型 参数名, 参数类型 参数名, ... , 参数类型 参数名) {
2     执行语句;
3     return 返回值;
4 }

修饰符:

方法的修饰符比较多,有对访问权限进行限定的,有静态修饰符static,还有最终修饰符final等,这些修饰符在后面的学习过程中会逐步介绍。

返回值类型:

用于限定方法返回值的数据类型,返回给调用方,返回类型可以是任意类型。

如果不需要返回值,则写void,也不需要写return和返回值。如果需要返回值,则需要写一个返回类型,并且return后的返回值需要和返回类型一致。

方法名:

功能块的名字,命名规则和变量命名规则一样。

参数类型和参数名:

参数类型用于限定调用方法时传入参数的数据类型,可以为任意类型,参数类型和返回类型没有任何关系。

参数名是一个变量,用于接收调用方法时传入的数据。

参数:

参数类型和参数名组成参数。

参数可以有多个,中间用逗号隔开。

方法定义时参数称为形式参数,简称形参。

方法调用时参数称为实际参数,简称实参。

形参和实参的类型、个数、顺序必须一致,名字没有要求。

执行语句:

里面可以写任何逻辑语句,表示的是此方法的具体功能。

return和返回值:

return用于结束方法以及返回方法指定类型的值。

返回值是被return语句返回的值,该值会返回给调用者。

调用

方法的调用可以通过如下方式调用:

1 类型 变量名 = 对象实例.方法名(参数);

但是在不同的情况下又有不同的区分,有的可以不写或者不能写。

是否有参数:

如果有参数,那么需要在括号中填写参数,多个参数用逗号分隔: 类型 变量名 = 对象实例.方法名(参数, 参数); 。

如果没有,则不需要填写参数: 类型 变量名 = 对象实例.方法名(); 。

是否有返回值:

如果方法有返回值,那么需要用接收返回值,也可以不接收,但建议用对象接收: 类型 变量名 = 对象实例.方法名(参数); 。

如果没有返回值,则不需要接收返回值: 对象实例.方法名(参数); 。

是否在当前类中使用:

如果在当前类中使用,则可以直接调用,不需要通过对象实例调用: 类型 变量名 = 方法名(参数); 。

如果在其他类中使用,则需要通过对象实例调用: 类型 变量名 = 对象实例.方法名(参数); 。

如果是被statis修饰的方法,则可以通过类名调用: 类型 变量名 = 类名.方法名(参数); 。

参数传递

参数传递是指,调用方法时,将实参的值传递给形参过程。

定义方法时,参数列表中的变量,我们称为形式参数。调用方法时,传入给方法的数值,我们称为实际参数。

当调用方法时,如果传入的数值为基本数据类型(包含String类型),形式参数的改变对实际参数不影响。

当调用方法时,如果传入的数值为引用数据类型(String类型除外),形式参数的改变对实际参数有影响。

重载

同一个类中,方法名相同,参数列表不同,这种现象称为方法重载(overload)。

所谓的参数不一样,主要有两点,第一是参数的个数不一样,第二是参数的类型不一样。只要这两方面有其中的一方面不一样就可以构成方法的重载了。

重写(覆盖)

方法覆盖是说子类重新定义了父类的方法,是在两个类中,必须有相同的方法名,相同的参数列表,相同的返回类型。

被重写的方法不能拥有比父类的方法更严格的访问控制权限。

构造方法不能被继承,因此不能被重写,在子类中只能通过super关键字调用父类的构造方法。

类的构造方法(构造器)

构造方法是类用于创建对象的一个特殊的方法,当类创建对象时,就会调用类的构造方法。

语法

1 修饰符 类名(参数列表) {
2     方法体;
3 }

说明

构造方法没有返回类型,也不能使用void关键字。

构造方法的方法名必须和类名一致。

如果在类中没有定义构造方法,那么编译器会提供默认的构造方法,默认的构造方法没有参数列表,也没有方法体。

如果在类中定义了构造方法,那么编译器就不会提供默认的构造方法。

构造方法必须使用new关键字进行调用: new 类名(); 或 new 类名(参数); 。

初始化块

说明

初始化块分为静态初始化块和动态初始化块,优先于构造方法执行,经常执行初始化信息。

静态初始化块和普通初始化块都可以有多个,都可以写任何逻辑语句,不能定义方法。

执行顺序

静态成员变量初始化和静态初始化块的执行顺序由定义位置决定,从上往下执行。

成员变量初始化和初始化块的执行顺序由定义的位置决定,从上往下执行。

最后执行构造方法。

普通初始化块和静态初始化块对比

相同点:

默认执行顺序都是从上往下,都可以有多个。

不同点:

普通初始化块能执行多次,静态初始化块只执行一次。

普通初始化块实在对象创建后执行,静态初始化块是在类加载时执行。

普通初始化块可以访问普通成员和静态成员,静态成员初始化块只能访问静态成员。

以上是关于Java面向对象——类的成员的主要内容,如果未能解决你的问题,请参考以下文章

Java面向对象——类的成员

java面向对象之继承

Java面向对象之内部类的详解

面向对象1——类的成员

Java基础知识点(面向对象)

java面向对象(上)--内部类