1、类与对象
1.1 对象的概念:
对象(Object)是现实世界中世纪存在的某个具体事物。(对象是类的实例)
1.2 类的概念:
把具有相同特征及行为的一组对象称为一类对象。(类是抽象的)
1.3类和对象的关系:
对象是具体的一个个实实在在的事物,类是这些具体事物(对象)的原型,是这些具体事物(对象)一般特征的描述。类与对象的关系如同模具和铸件的关系,类是创建对象的模具,而对象则是由类这个模具制作出来的铸件。
2、定义对象和创建对象
2.1类的声明
在Java中类的声明格式如下
[类的修饰字]class 类名称 [extends 父类名称][implements 接口名称列表]
{
变量定义及初始化;
方法定义及方法体;
}
1)类的修饰字:[public] [abstract] [final]。
public:类的访问控制符。java类具有两种访问控制符:public和default。public允许类具有完全开放的可见性,所有其他类都可以访问它,省略public则为default可见性,即只有位于用一个包中的类可以访问该类。
abstract:指明该类为一个抽象类,指该类是一个定义不完全的类,需要被继承,才能实例化创建对象。
final:表明该类为终态类,不能被继承。final不能被修改。(final可以修饰属性(将变量定义为常变量)、方法(方法不能被重写)和类(类不可以被继承))
(2)class是创建类所使用的关键字。
(3)
(4)
包含属性和方法的声明(5)extends为类继承,superClassName为父类。如果在类定义时没有指定继承关系,则自己从Object类派生该类。
(6)implements为实现接口,interfaceNameList为被实现的一个或多个接口名。
2.2类的成员
类的成员包括属性(变量;静态特征)和方法(动态行为)两个部分,定义格式如下:
(1)成员变量定义格式:
[变量修饰字]变量数据类型 变量名1,变量名2[=变量初值]...;
变量修饰符可以为[public | protected | private] [static] [final] [transient] [volatile]。
成员变量的类型可以是Java中的任意数据类型,包括简单类型、类、接口、数组。
在一个类中的成员变量应该是唯一的。
(2)成员方法定义格式
方法修饰字] 返回类型 方法名称(参数1,参数2,...)[throws exceptionList]
{undefined
…(statements;) //方法体:方法体的内容
}
方法修饰字可以为[public | protected | private] [static] [final] [abstract] [native] [synchronzied]。
返回类型可以是任意的Java数据类型,当一个方法不需要返回值是,返回类型为void。
参数的类型可以是简单数据类型,也可以是引用数据类型(数组、类或接口),参数传递方式是值传递。
方法体是对方法的实现。它包括局部变量的声明以及所有合法的Java指令。局部变量的作用域只在该方法内部。
【说明:】
Java定义了四种访问级别:public、protected、default和private。访问级别用来控制其他类对当前类的成员的访问。
具有static证明的成员属于静态成员,改成员属于类本身,不需要实例化就可以访问。
final声明的成员变量为常量,final声明的方法在类继承时不许子类覆盖。
............
2.3创建对象
书中例子用到 Box box=new Box();语句类创建一个对象,new可以理解为创建一个对象的关键字,通过使用new关键字为对象分配内存,初始化实例变量,并调用构造方法。
2.4构造方法(重点)
(1)构造方法的特征:
方法名同类名。
它不含返回值。(不可以使用void,省略类型)
它不能在方法中用return语句返回一个值。
(2)构造方法的分类
一个类至少有一个构造方法。一类是你不提供则系统提供(不带参数的构造方法<也称为默认构造方法>)
你若提供则系统不再提示默认的构造方法。
(3)构造方法的作用:对属性赋值。
参数列表:有几个属性就带几个参数。
2.5this关键字
this表示当前类的对象。
this用法:防止同名覆盖(局部变量覆盖全局变量);主动调用成员。
this关键字的用法:
访问当前对象的数据成员:this.数据成员
访问当前对象的成员方法:this.成员方法
当有方法重载的构造方法时,用来引用同一个类的其他构造方法:this([参数])
注意:this([参数])必须写在方法体的第一行,否则会出现编译错误。
this();调用构造方法(该构造函数的第1行语句)
this可以调用属性和方法。
由于函数内部的变量和类中的成员变量重名,因此成员变量被屏蔽,得不到正常效果。此时可以用“this.”来标识该变量属于类中的成员,而不是局部变量。
void init(String name, String sex, int age)(
this.name=name;
this.sex= sex;
this.age=age;
2.5对象的生命周期
JVM(解释运行 垃圾回收 跨平台)
3、方法
3.1方法的重载(同名不同参)
(1)成员方法的重载
以下用一个示例引入,在计算器类中需要求各种数值的绝对值,如求整数和double型
class Calc
int absInt(int a)(
return a > 0?a: - a;
double absDouble(double a)
return a> 0?a: - a;
重载方法的参数表必须不同。参数不同主要是参数类型、顺序和个数不同。(也可以理解为,参数不同或相同位置参数类型不同)返回值类型无要求。
(2)构造方法的重载
当一个类有多个重载的构造函数时,他们之间可以相互调用,这种调用通过关键字this实现,同时this调用语句必须是构造函数中的第一个执行语句。
4、静态属性和静态方法
静态属性和静态方法:可以用类名调用也可以用对象名调用。
4.1静态变量
静态变量的特点是它不是属于某个对象的,而是属于整个类的,他们在类被载入的时候就被创建,只要类存在,static变量就存在,因此静态变量不保存在某个对象的存储单元中,而是保持在类的公共内存单元中,任何一个类的对象都可以访问它,修改它。
静态属性不可以调用非静态属性。属性通常是公有的,方法通常是私有的。
静态变量的定义格式如下:
静态变量调用: 可以通过“类名.成员名”的方式直接访问 也可以通过“对象名.成员名”的方式进行访问
注意
在静态函数调用时对象还没有创建,因此在静态函数中不能直接访问类中的非静态成员变量和成员函数,也不能使用关键字this。例如,下面的代码报错(Cannot make a static reference to the non-static field name)
class Customerf
String name;
static String bankName;
static void setBankName(String bankName)( Customer. bankName =bankName;
System.out.println(name); //报错
4.2静态方法 静态方法和静态属性一样的是属于整个类,不是属于某个对象的。调用静态方法可以通过“类名.成员名”的方式进行访问,也可以先创建对象,通过“对象名.成员名”的方式进行访问。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)