Java课堂笔记面向对象之类Class和对象Object

背景:java类和对象的关系?类是java中的基本程序单元,关键字class来定义,类是java中描述事务的,对象是该类事务中具体的个体;java中申明任何变量必须要定义数据类型。

1、类class,描述事务的属性,行为。

public class Car {

//	私有修饰符,定义成员变量
	private String color;
	private String make;
	private String model;
	private int year;

	public void run() {

		System.out.println("汽车开动了...");

	}

}

外部类调用私有成员变量时,需要通过this关键字指定,哪个对象调用就把哪个变量给谁,eclipse有快速创建setters方法。 

Java课堂笔记面向对象之类Class和对象Object_第1张图片

2、封装:隐藏实现细节,私有修饰成员变量,对外使用公共访问方式,使用setters()和getters()公共方法。

public class Car {

	// 私有修饰符,定义成员变量,本类中可直接访问
	private String color;
	private String make;
	private String model;
	private int year;

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public String getMake() {
		return make;
	}

	public void setMake(String make) {
		this.make = make;
	}

	public String getModel() {
		return model;
	}

	public void setModel(String model) {
		this.model = model;
	}

	public int getYear() {
		return year;
	}

	// 私有修饰符成员变量,封装,对外使用公共的方法来访问,安全性
	public void setYear(int year) {
		if (year > 2000) {
			this.year = year;
		} else {
			System.out.println("年份无效...");
		}
	}

	/*
	 * this关键字作用: 1. 如果存在同名成员变量与局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键字指定访问成员变量的数据。
	 * 2. 在一个构造函数中可以调用另外一个构造函数初始化对象。
	 */
	public void run() {

		this.getColor();

		System.out.println("汽车开动了..." + this.getColor());

	}

}

3、上面对事物的属性和行为进行了描述,  封装好了,那么在外部怎么调用了?new关键字是创建对象时使用的。

public class MethodDemo {

	public static void main(String[] args) {
		Car bmw = new Car();
		bmw.setMake("德国");
		System.out.println(bmw.getMake());
		bmw.run();

		bmw.setModel("320Li");
		System.out.println(bmw.getModel());

		System.out.println(bmw.getColor());

		// 对这个year参数(属性)进行了条件判断,通过set方法来设值,满足条件才能get返回数据。
		bmw.setYear(1999);
		System.out.println(bmw.getYear());
	}
}

思考:同样是通过new关键字来创建对象,下面有什么不一样?

//假设一个构造函数 contract_demo(),下面创建对象:

contract_demo con=new contract_demo();

new contract_demo();

//上面有什么不一样?

一个是用对象的引用去调用方法,一个是用对象调用方法。

con是指向一个可以指向Contract类的对象的引用

引用是放在栈区的,而new的对象是放在堆里的

你可能感兴趣的:(Java编程基础)