12、面向对象初识

12_面向对象初识

1、类和对象
类:
	针对于一类事物的描述,包括属性描述和行为描述
	人类为例
		属性行为:身高、体重、年龄、姓名
		行为描述:吃饭、睡觉、打游戏
		
对象:
	具体的、唯一的、独立的、特殊的个体
2、Java中定义类的格式
格式:
	class 类名 {
		属性描述
			采用变量形式 存储对应的数据 进行属性描述
			【Field 成员变量】
		行为描述
			采用方法形式 使用方法声明明确方法所需参数和返回值信息 同时完成对应功能
			【Method 成员方法】
	}

类名命名要求:
	见名知意、大驼峰命名法
2.1 Java定义类之成员变量
class Person {
	/* 属性描述 【Field 成员变量】 */
	/* 
	id 成员变量 数据类型为 int 类型 用于描述当前类对应对象的 id 属性
	id 成员变量对应的具体数据 需要在创建对象之后给予赋值操作
	*/
	int id;
	
	/*
	name 成员变量 数据类型为字符串类型 用于描述当前 Person 类对象的姓名
	*/
	String name;
	
	/*
	age 成员变量 数据类型为 int 类型 用于描述当前 Person 类对象的年龄
	*/
	int age;
}
2.2 Java中定义类之成员方法
/**
* 自定义类,当前类没有使用 public 关键字
* 类名和文件名不一致,
* Person 类型,类名符合见名知意,大驼峰命名法
*/
class Person {
	/* 行为描述 【Method 成员方法】 */
	/**
	* Person 类吃饭(eat)行为描述 参数类型为字符串类型 
	* 要求用户调用时提供字符串类型参数 告知吃了什么食物
	* 
	* @param food 字符串类型 食物的名称
	*/
	public void eat(String food) {
		System.out.println("今天吃了" + food);
	}
	
	/**
	* Person 类睡觉(sleep)行为描述  
	*/
	public void sleep() {
		System.out.println("睡觉时间到了");
	}
	
	/**
	* Person 类敲代码(coding) 行为描述
	*/
	public void coding() {
		System.out.println("键盘敲烂,月薪过万");
	}
}
2.3 Java实例化对象方式
/*
创建对象/实例化对象的格式:
	类名 对象名 = new 构造方法(参数);
*/
Person person = new Person();
2.4 通过对象操作成员变量赋值和取值
/*
Person 类对象操作成员变量
	目前 Person 类内对应的成员变量有
		int id; String name; int age;
				
格式:
	类对象.成员变量
*/
//通过 对象名.成员变量 对成员变量进行赋值操作
person.id = 001;
person.name = "小芳";
person.age = 18;
		
//通过 对象名.成员变量 对成员变量进行取值操作
System.out.println("ID: " + person.id);
System.out.println("Name: " + person.name);
System.out.println("Age: " + person.age);
2.5 通过对象调用成员方法
/*
Person 类对象调用执行成员方法
	目前 Person 类内对应的成员方法有
		void eat(String); void sleep(); void coding();
		
格式:
	对象.成员方法();
*/
//通过 Person 类对象 person 调用 eat 方法 方法所需参数为 String 类型
person.eat("火锅");
person.sleep();
person.coding();
3、构造方法
3.1 Java编译器提供的无参构造方法

javap -c -l -private XXX.class

构造方法

【注意】
	Java编译器发现当前类没有自己声明/定义构造方法,会自动提供一个无参构造方法;如果当前类中存在任意一个构造方法,Java编译器不再提供对应的无参构造方法。
3.2 Java中的构造方法
构造方法的作用:
	1. 构造方法的名称必须是类名,用于提供给 new 关键字
使用,明确当前实例化对象对应的数据类型
	2. 构造方法只用于初始化实例化对象数据内容。

构造方法格式:
	public 类名(初始化操作必要的参数) {
		初始化赋值语句,给予成员变量赋值操作。
	}
3.3 构造方法案例
/**
* 自定义类 SingleDog 类
*/
class SingleDog {
	//Single 成员变量
	int id;
	String name;
	int age;
	
	//无参构造方法
	public SingleDog() {
		System.out.println("类 SingleDog 的无参构造方法,所有的成员变量都没有初始化");
	}
	
	//带有 String 类型参数的构造方法 用于初始化 name 成员变量
	public SingleDog(String name) {
		/*
		name 是 SingleDog 类的成员变量 String 类型
		name 是构造方法参数 
		*/
		this.name = name;
		
		System.out.println("类 SingleDog 的有参构造方法,仅初始化成员变量 name");
	}
	
	//带有 int, String 类型参数的构造方法 用于初始化 id, name 成员变量
	public SingleDog(int id, String name) {
		this.id = id;
		this.name = name;
		
		System.out.println("类 SingleDog 的有参构造方法,仅初始化成员变量 id, name");
	}
	
	//带有 int, String, int 类型参数的构造方法 用于初始化 id, name, age 成员变量
	public SingleDog(int id, String name, int age) {
		this.id = id;
		this.name = name;
		this.age = age;
		
		System.out.println("类 SingleDog 的有参构造方法,初始化成员变量 id, name, age");
	}
}

public class Demo2 {
	public static void main(String[] args) {
		
		System.out.println();
		
		/*
		new 关键字 + 无参构造方法
		实例化 SingleDog 对象 对象名为 sd1
		*/
		SingleDog sd1 = new SingleDog();
		
		//对 SingleDog 类对象 sd1 做取值操作
		System.out.println("id: " + sd1.id);
		System.out.println("name: " + sd1.name);
		System.out.println("age: " + sd1.age);
		
		System.out.println();
		
		/*
		new 关键字 + 有参构造方法
		实例化 SingleDog 对象 对象名为 sd2 传递 String 类型参数 name
		*/
		SingleDog sd2 = new SingleDog("小芳");
		
		//对 SingleDog 类对象 sd2 做取值操作
		System.out.println("id: " + sd2.id);
		System.out.println("name: " + sd2.name);
		System.out.println("age: " + sd2.age);
		
		System.out.println();
		
		/*
		new 关键字 + 有参构造方法
		实例化 SingleDog 对象 对象名为 sd3 传递 int, String 类型参数 id, name
		*/
		SingleDog sd3 = new SingleDog(1, "小芳");
		
		//对 SingleDog 类对象 sd3 做取值操作
		System.out.println("id: " + sd3.id);
		System.out.println("name: " + sd3.name);
		System.out.println("age: " + sd3.age);
		
		System.out.println();
		
		/*
		new 关键字 + 有参构造方法
		实例化 SingleDog 对象 对象名为 sd3 传递 int, String, int 类型参数 id, name, age
		*/
		SingleDog sd4 = new SingleDog(1, "小芳", 18);
		
		//对 SingleDog 类对象 sd3 做取值操作
		System.out.println("id: " + sd4.id);
		System.out.println("name: " + sd4.name);
		System.out.println("age: " + sd4.age);
		
		
	}
}
3.4 构造方法总结
1. 构造方法格式
	public 类名(必要参数) {
		成员变量赋值语句;
	}
2. 实例化对象格式
	类名 对象名 = new 构造方法(实际参数);
3. 实例化对象 是由 new + 构造方法 完成
	a. new 关键字根据构造方法名称,明确对应数据类型,在
内存【堆区】申请对应的空间
	b. new 关键字将申请的空间进行数据清理
	c. 构造方法利用参数内容和赋值语句,给予成员变量赋值
操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值