疯狂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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值