疯狂java笔记——类和对象

定义类

类:class 对象:object 也称作实例,instance。

对象是一个具体的实体,类是一组这样实体。

类的基本格式

【修饰符】 class 类名{

构造器定义

成员变量

方法

}

定义成员变量

【修饰符】 类型 变量名 = 默认值;

修饰符:可以省略,可以是(public ,protected,private,static, final)其中public,protected,private三个只能出现一个,可以与static,final组合修饰。

定义方法

【修饰符】 方法返回值类型 方法名(形参列表) { }

修饰符:可以省略,可以是(public ,protected,private,static, final,abstract)其中public,protected,private三个只能出现一个,abstract和final只能出现其一,可以与static组合修饰。

方法返回值类型:如果声明了方法返回值类型,必须加return语句,返回一个变量或者表达式,变量或者表达式的类型与声明类型匹配。如果没有返回值,必须用void声明没有返回值。

static 【静态】

static可以用于修饰成员变量和方法,static修饰的成员表示它属于这个类本身,而不是类的一个实例。

所以通常static修饰的成员和方法称为类变量,类方法。

不用static修饰的方法和成员属于该类的单个实例,而不属于该类,通常称为实例变量,实例方法。

static为静态的意思,所以有时称为静态成员,静态方法。不使用static修饰的成员变量和方法称为非静态成员,非静态方法。

静态成员不能直接访问非静态成员。

static的作用

用于区分成员变量,方法,内部类,初始化块。

static相当于一个标志,有static修饰的成员属于类本身,没有static修饰的成员变量属于该类的实例。

构造器

构造器是一个特殊的方法,语法格式与定义方法的格式很像。

【修饰符】 构造器名(形参列表){

可执行语句组成构造体

}

修饰符:可以省略,或者public,protected,private其中之一

构造器名必须与类名相同

形参列表:与定义方法的形参列表格式完全相同。

构造器不能定义返回值类型,不能使用void声明构造器没有返回值。如果构造器定义了返回值类型或者使用了void,编译不会出错,但会当做方法处理,就不再是构造器了。

定义一个Person类

public class Person

{

// 下面定义了两个成员变量

public String name;

public int age;

// 下面定义了一个say方法

public void say(String content)

{

System.out.println(content);

}

}

没有构造器,系统提供默认的构造器,默认构造器没有参数

接下来使用该类,java的类功能有如下作用:

--定义变量

--创建对象

--调用类的类方法或访问类的类变量。

对象的创建和使用

// 使用Peron类定义一个Person类型的变量

Person p;

// 通过new关键字调用Person类的构造器,返回一个Person实例,

// 将该Person实例赋给p变量。

p = new Person();

也可以直接简写:Person p = new Person();

接下来使用对象,对象的功能如下:

--访问对象的实例变量

--调用对象的方法

// 访问p的name实例变量,直接为该变量赋值。

p.name = "李刚";

// 调用p的say方法,声明say()方法时定义了一个形参,

// 调用该方法必须为形参指定一个值

p.say("学习很容易!");

// 直接输出p的name实例变量,将输出 李刚

System.out.println(p.name);

引用:

实际上Person p只是引用变量,在内存中只是一个引导,指向堆内存里的对象(name,age)

当一个对象创建成功后,这个对象保存在堆内存中,java程序不容许直接访问堆内存中的对象,只能通过该对象的引用操作该对象。

不管对象还是数据,当程序访问引用变量(p)的成员或方法时,实际上是访问该引用变量所引用的数组,对象的成员变量或方法。

对象的this引用

this可以代表任何对象,谁在调用,this就代表谁。

public class Dog

{

// 定义一个jump()方法

public void jump()

{

System.out.println("正在执行jump方法");

}

// 定义一个run()方法,run()方法需要借助jump()方法

public void run()

{

Dog d = new Dog();

d.jump();

System.out.println("正在执行run方法");

}

}

一个类中有2个方法,在run方法中调用jump方法,可以直接创建类的对象,对象然后调用jump方法。

其实可以这样写

public void run()

{

// 使用this引用调用run()方法的对象

this.jump();

System.out.println("正在执行run方法");

}

或者直接写jump();也可以

static修饰的方法不能用this,所以static修饰的方法不能访问其他普通成员,所以java语法规定:静态成员不能直接访问非静态成员。

如果真的需要在静态方法中访问普通方法,可以重新创建对象

new StaticAccesNonStatic().info();

如下:

public class ThisInConstructor

{

// 定义一个名为foo的成员变量

public int foo;

public ThisInConstructor()

{

// 在构造器里定义一个foo变量

int foo = 0;

// 使用this代表该构造器正在初始化的对象

// 下面的代码将会把该构造器正在初始化的对象的foo成员变量设为6。

this.foo = 6;

}

public static void main(String[] args)

{

System.out.println(new ThisInConstructor().foo);

}

}

结果输出为:6

return this;

返回调用该方法的对象,如下:

public class ReturnThis

{

public int age;

public ReturnThis grow()

{

age++;

// return this返回调用该方法的对象

return this;

}

public static void main(String[ ] args)

{

ReturnThis rt = new ReturnThis();

rt.grow()

System.out.println("rt的age成员变量值是:" + rt.age);

}

}

输出结果为:1

猜你喜欢

转载自blog.csdn.net/qq_36332133/article/details/81182675