一、对象

     1.概念:复杂的客观事物,是Java程序中的一种表现形式(一切客观事物都是对象)

     2.组成:

(1)属性:代表对象有什么特征或特点(对象的静态部分) 用变量来表示

(2)方法:代表对象有什么功能(对象的动态部分) 用函数或方法表示

     3.计算机中对象的描述:用类对一组对象进行描述,该对象有哪些属性和方法

     4.类和对象的关系

(1)类是对象的模板

(2)对象是类的实例

二、类的组成

     1.属性:描述对象有哪些特征、特点

a.属性又称成员变量

b.位置:定义在类以内,方法以外(作用范围:至少在本类中有效

c.数据类型 变量名;

  数据类型 变量名=值;

注:声明和赋值需要一起进行;

类中定义属性,只需定义程序功能所需要的那部分属性即可。

class Dog{
	String name; //成员变量
	int age;
	char sex;

d.成员变量具有默认值 与数组相同

整数:0;

小数:0.0;

字符:空字符('\u0000');

布尔:false;

引用:null;

e:命名冲突

在一个类中不能有重名的属性(成员变量),但成员变量可以和局部变量命名冲突,此时优先使用局部变量(在定于局部变量的方法中)。

f:成员变量和局部变量区别

位置:局部变量 定义在方法内;成员变量定义在 类以内 方法以外;

默认值:局部变量 无默认值 先赋值后使用;成员变量 有默认值

作用范围:局部变量 从定义开始 到定义它的代码块结束;成员变量 至少在本类中有效

命名范围:在重合的作用范围内,不允许冲突;成员变量 可以和局部变量命名冲突,冲突时,在定义局部变量 的方法中,优先使用局部变量。

     2.方法:描述对象有哪些功能 行为

(1)方法又称成员方法;

(2)位置:定义在类以内,其他方法以外;

(3)定义:

a.方法的声明:代表对象能做什么;

方法修饰符 返回值类型 方法名

b.方法的实现:代表对象具体怎么做,如何实现声明的功能;

注:一个方法可以有多个修饰符,且修饰符之间没有先后顺序。

public void play(){     //方法
		System.out.println("宠物狗。。。");
		this.play(3);

3.方法的重构(overload)

a.在一个类中定义多个相同名字,但是形参列表不同(个数、顺序、类型)

b.要求:

①方法名相同

②形参列表不同

③返回值类型、修饰符、异常没有要求;

注:只是形参名字不同,不能构成方法重构

c.使用:编译器会根据调用时指定实际参数,决定具体调用那一个方法。

     3.构造方法:是类中的一种特殊方法,也称构造器

(1)特点:

a.构造方法的方法名必须和类名完全一致;

b.构造方法没有返回值(void也没有)

c.构造方法允许重载

d.构造方法不允许手动调节

public Dog(){          //构造方法
		System.out.println("Dog()...1");   //无参数
	}
	public Dog(int a){                           //有参数
		System.out.println("Dog(int a)...2");
	}
	public Dog(String name,int age,char sex){      //形参相当于局部变量
		System.out.println("Dog(String name,int age,char sex)...3");

(2)注:

a. 构造方法不允许手动调用,在创建对象时,根据 指定实际参数决定调用哪一个构造方法完成对象 的创建,一个对象的创建只能调用一次构造方法

b. 如果一个类中没有定义任何构造方法,则会自动默认添加一个公开无参数的构造方法; 如果类中定义了任何的有参数的构造方法,则不再提供默认的公开无参数的构造方法。

(3) 构造方法的作用:通常用于给属性赋值。

(4) 建议:定义一个类时,通常提供无参数的构造方法和有参数的构造方法,没有特殊说明的情况下,有参数的构造方法的参数个数取决于属性的个数和类型。

三、对象的创建

1.写法: 类名 对象名=new 类名();

2.使用:

①对 属性赋值:对象名.属性名=值;

调用属性:对象名.属性名

②调用属性的方法: 对象名.方法名(实参);

package demo;         //成员变量与局部变量冲突先局部
public class TestDog{
	public static void main(String[] args){
		Dog d=new Dog(); //创建对象时,根据传递的参数,决定使用哪一个构造方法完成对象的创建
		Dog d2=new Dog(2);
		Dog d3=new Dog("菽粟",2,'公');
		System.out.println(d3.name+"-"+d3.age+"-"+d3.sex);
		d3.play();
	}
}
class Dog{
	String name; //成员变量
	int age;
	char sex;
	public Dog(){          //构造方法
		System.out.println("Dog()...1");
	}
	public Dog(int a){
		System.out.println("Dog(int a)...2");
	}
	public Dog(String name,int age,char sex){      //形参相当于局部变量
		System.out.println("Dog(String name,int age,char sex)...3");
		//  形参对应的局部变量中存储的数据传递给属性
		// 成员变量=局部变量(形参)
		this.name=name;
		this.age=age;
		this.sex=sex;
	}
	public void play(){     //方法
		System.out.println("宠物狗。。。");
		this.play(3);
	}
	public void play(int hours){
		System.out.println("宠物狗玩..."+hours);
	}	
}

四、this的应用

     1.this.的应用

a.this. 用在类中的成员方法或是构造方法中,代表调用当前对象的属性或是成员方法。

b.this.属性名:代表调用当前对象的属性

this.成员方法名(实参);代表调用当前对象的成员方法。

注:this.通常可以省略,但是一旦成员变量和局部变量命名冲突时,需要用 this. 来区分 成员变量.

     2.this()

a.this()用在类中构造方法中,代表调用本类中的其他构造方法。

b. this() : 代表调用本类无参数的构造方法

this(实参):代表调用本类有参数的构造方法

c.this()/this(实参) 必须定义在构造方法中第一行有效语句

d.this()/this(实参) 使用时避免出现递归调用,所以一个类中构造方法中的第一行不能都使用this()/ this(实参)

更多推荐