8.类与对象

1.类与对象的定义

定义一个类:

class Person { 					// 定义一个类
	String name; 				// 【成员属性】人的姓名
	int age; 					// 【成员属性】人的年龄
	/**
	 * 定义一个信息获取的操作方法,此方法可以输出属性内容
	 */
	public void tell() {
		System.out.println("姓名:" + name + "、年龄:" + age);
	}
}

对象实例化进行类操作:

class Person { 							// 定义一个类,
	String name; 						// 【成员属性】人的姓名
	int age; 							// 【成员属性】人的年龄
	/**
	 * 定义一个信息获取的操作方法,此方法可以输出属性内容
	 */
	public void tell() {
		System.out.println("姓名:" + name + "、年龄:" + age);
	}
}
public class JavaDemo {
	public static void main(String args[]) {
		Person per = new Person(); 		// 声明并实例化对象
		per.name = "张三";				// 为成员属性赋值
		per.age = 18;					// 为成员属性赋值
		per.tell();						// 进行方法的调用
	}

3.观察类中成员属性默认值:

class Person { 							// 定义一个类,
	String name; 						// 【成员属性】人的姓名
	int age; 							// 【成员属性】人的年龄
	/**
	 * 定义一个信息获取的操作方法,此方法可以输出属性内容
	 */
	public void tell() {
		System.out.println("姓名:" + name + "、年龄:" + age);
	}
}
public class JavaDemo {
	public static void main(String args[]) {
		Person per = new Person(); 		// 声明并实例化对象
		per.tell();						// 进行方法的调用
	}
}

4.NullPointException

class Person { 							// 定义一个类,
	String name; 						// 【成员属性】人的姓名
	int age; 							// 【成员属性】人的年龄
	/**
	 * 定义一个信息获取的操作方法,此方法可以输出属性内容
	 */
	public void tell() {
		System.out.println("姓名:" + name + "、年龄:" + age);
	}
}
public class JavaDemo {
	public static void main(String args[]) {
		Person per = null ;				// 声明对象 
		per.name = "张三";				// 为成员属性赋值
		per.age = 18;					// 为成员属性赋值
		per.tell();						// 进行方法的调用
	}
}

5.使用匿名对象进行类操作

class Person { 							// 定义一个类,
	String name; 						// 【成员属性】人的姓名
	int age; 							// 【成员属性】人的年龄
	/**
	 * 定义一个信息获取的操作方法,此方法可以输出属性内容
	 */
	public void tell() {
		System.out.println("姓名:" + name + "、年龄:" + age);
	}
}
public class JavaDemo {
	public static void main(String args[]) {
		new Person("张三", 18).tell(); 				// 进行方法的调用 
	}
}

2.构造方法

定义构造方法为属性初始化:

class Person { 										// 定义一个类
	private String name; 								// 【成员属性】人的姓名
	private int age; 									// 【成员属性】人的年龄
	public Person(String tempName, int tempAge) {		// 构造方法
		name = tempName ;							// name属性初始化
		age = tempAge ;								// age属性初始化
	}
	// setter、getter略 ...
	public void tell() {
		System.out.println("姓名:" + name + "、年龄:" + age);
	}
}
public class JavaDemo {
	public static void main(String args[]) {
		Person per = new Person("张三", 18); 		// 声明并实例化对象
		per.tell() ;								// 进行方法的调用 
	}
}

构造方法重载:

class Person { 										// 定义一个类
	private String name; 								// 【成员属性】人的姓名
	private int age; 									// 【成员属性】人的年龄
	public Person() {								// 【构造方法重载】定义无参构造方法
		name = "无名氏" ;								// 设置name属性内容
		age = -1 ;									// 设置age属性内容
	}
	public Person(String tempName) {					// 【构造方法重载】定义单参构造方法
		name = tempName ;							// 设置name属性内容
	}
	public Person(String tempName, int tempAge) {		// 【构造方法重载】定义双参构造方法
		name = tempName ;							// name属性初始化
		age = tempAge ;								// age属性初始化
	}
	// setter、getter略 ...
	public void tell() {
		System.out.println("姓名:" + name + "、年龄:" + age);
	}
}
public class JavaDemo {
	public static void main(String args[]) {
		Person per = new Person("张三"); 				// 声明并实例化对象
		per.tell() ;									// 进行方法的调用 
	}
}

3.this关键字

调用本类属性:

class Person { 									// 定义一个类
	private String name; 							// 【成员属性】人的姓名
	private int age; 								// 【成员属性】人的年龄
	/**
	 * 定义构造方法,该方法中的参数名称与成员属性名称相同
	 * @param name 设置name成员属性内容
	 * @param age 设置age成员属性内容
	 */
	public Person(String name, int age) {
		this.name = name ;						// 使用this标注本类属性
		this.age = age ; 							// 使用this标注本类属性
	}
	public void tell() {							// 使用this明确标准本类属性
		System.out.println("姓名:" + this.name + "、年龄:" + this.age);
	}
}
public class JavaDemo {
	public static void main(String args[]) {
		Person per = new Person("张三", 12);		// 实例化Person类对象
		per.tell(); 								// 信息输出
	}
}

调用本类方法:

class Person { 									// 定义一个类
	private String name; 							// 【成员属性】人的姓名
	private int age; 								// 【成员属性】人的年龄
	public Person(String name, int age) {
		this.setName(name);						// 调用本类setName()方法
		setAge(age) ;							// 不使用“this.方法()”也表示调用本类方法
	}
	public void tell() {							// 使用this明确标准本类属性
		System.out.println("姓名:" + this.name + "、年龄:" + this.age);
	}
	
}
public class JavaDemo {
	public static void main(String args[]) {
		Person per = new Person("张三", 12);		// 实例化Person类对象
		per.tell(); 								// 信息输出
	}
}

4.static关键字

定义static属性:

class Chinese {
	private String name ;							// 【普通成员属性】保存姓名信息
	private int age ;							// 【普通成员属性】保存年龄信息
	static String country = "中华人民共和国" ;		// 【静态成员属性】国家,暂时不封装
	public Chinese(String name,int age) {			// 设置普通属性内容
		this.name = name ;						// 设置name属性内容
		this.age = age ;							// 设置age属性内容
	}
	
	public String getInfo() {
		return "姓名:" + this.name + "、年龄:" + this.age + "、国家:" + this.country ;
	} 
}
public class JavaDemo {
	public static void main(String args[]) {
		Chinese perA = new Chinese("张三",10) ;	// 实例化Chinese类对象
		Chinese perB = new Chinese("李四",10) ;	// 实例化Chinese类对象
		Chinese perC = new Chinese("王五",11) ;	// 实例化Chinese类对象 
		perA.country = "伟大的中国" ;				// 修改静态属性内容
		System.out.println(perA.getInfo()) ;		// 获取对象信息
		System.out.println(perB.getInfo()) ;		// 获取对象信息
		System.out.println(perC.getInfo()) ;		// 获取对象信息
	}
}

static定义方法:

class Chinese {
	private String name ;							// 【普通成员属性】保存姓名信息
	private int age ;							// 【普通成员属性】保存年龄信息
	private static String country = "中国" ;		// 【静态成员属性】保存国家信息
	public Chinese(String name,int age) {			// 设置普通属性内容
		this.name = name ;						// 设置name属性内容
		this.age = age ;							// 设置age属性内容
	}
	/**
	 * 定义static方法,此方法可以在没有实例化对象的情况下直接调用
	 * 利用此方法可以修改静态属性country的内容
	 * static方法中不允许使用this关键字
	 * @param c 要修改的新内容
	 */
	public static void setCountry(String c) {
		country = c;								// 修改static属性
	}
	// setter、getter略
	/**
	 * 获取对象完整信息方法,该方法为普通方法,需要通过实例化对象调用,可以使用this调用static属性
	 * 但是从严格意义上来讲,此时最好是通过类名称调用,例如:“Chinese.country”
	 * @return 对象完整信息
	 */
	public String getInfo() {
		return "姓名:" + this.name + "、年龄:" + this.age + "、国家:" + Chinese.country ;
	}
}
public class JavaDemo {
	public static void main(String args[]) {
		Chinese.setCountry("中华人民共和国") ;		// 修改静态属性内容
		Chinese per = new Chinese("张三",10) ;		// 实例化Chinese类对象
		System.out.println(per.getInfo()) ;		// 获取对象信息
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值