對象、類

1、面向對象概述

  • 面向對象
    • 是一種編程思想,是發展到必定階段後產生的
    • 咱們有程序的編寫者、執行者轉換爲調用者、指揮者
  • 面向過程
    • 編程思想
    • 注重本身實現的過程
    • 一組具備相同或者類似屬性、行爲事務的統稱
    • 是對象的抽象
  • 對象
    • 現實世界中具體存在的實物
    • 是類的具體描述

2、類的建立

  • 建立一個類須要關注的點
    • 類名
      • 這個類的名字
    • 屬性
      • 這一羣對象共有的一些特徵
      • 可使用名詞提煉法
    • 方法
      • 一羣對象所共有的行爲
      • 編寫成方法
      • 目前不用加static
package com.qf.cls;

/**
 * 建立Dog類
 * 	抽取狗子的特徵,定義爲屬性
 * 	抽取狗子的行爲,定義爲方法
 * @author Dushine2008
 *
 */
public class Dog {
	// 屬性--品種-哈士奇、年齡-三、名字-道哥、顏色-黑白
	String breed;
	int age;
	String name;
	String color;
	
	// 方法
	public void eat(String food) {
		System.out.println("狗子喜歡吃:" + food);
	}
	
	public void sleep(int hour) {
		System.out.println("咱們家的狗子天天睡覺時長是" + hour);
	}
	
}

3、對象的建立

  • 類是對象的模板,可使用類建立出無數個具體的對象
  • 類名 對象名 = new 類名(參數列表);
package com.qf.cls;

public class DogTest {
	public static void main(String[] args) {
		Dog dog = new Dog();
		// 調用方法
		dog.eat("骨頭");
		dog.sleep(8);
		
		// 調用屬性,屬性若是沒有提早賦值,獲得的是默認值
		int age = dog.age;
		System.out.println(age);
		
		// 給dog的屬性賦值
		dog.breed = "哈士奇";
		dog.name = "二哈";
		dog.age = 3;
		dog.color = "黑白";
		
		// 調用dog的屬性
		System.out.println("狗子的品種是:" + dog.breed);
		System.out.println("狗子的名字是:" + dog.name);
		System.out.println("狗子的年齡是:" + dog.age);
		System.out.println("狗子的顏色是:" + dog.color);
	}
}

4、建立多個對象

  • 一個類是多個對象的模板
  • 一個類能夠建立不少個對象
package com.qf.cls;

public class CarTest {
	public static void main(String[] args) {
		// 建立對象
		Car car = new Car();
		
		// 給對象的屬性賦值
		car.brand = "比亞迪*唐";
		
		// 調用對象的方法
		car.start("搖把");
		car.run(200);
		
		Car jili = new Car();
		jili.brand = "cheey";
		jili.maxSpeed = 220;
		
		jili.start("一鍵啓動");
		jili.run(120);
		
	}
}

/**
 * Car類
 * @author Dushine2008
 *
 */
class Car{
	// 屬性
	String brand;
	String color;
	int price;
	int maxSpeed;
	
	
	// 方法
	public void start(String func) {
		System.out.println(brand + "的車子啓動的方式是:" + func);
	}
	
	public void run(int speed) {
		System.out.println("車子目前的速度是:" + speed);
	}
}

建立單個對象的過程

建立多個對象的過程

5、局部變量和實例變量

類型 局部變量 實例變量
定義位置 方法內部 類中方法外
存儲位置 棧內存 堆內存
默認值 無,必須先賦值在使用 有默認值,和數據類型有關
做用範圍 整個方法 整個類
生命週期 建立到方法執行結束 隨着對象建立而建立,對象消失而消失
命名衝突 方法中不能存在重名變量 能夠和局部變量重名,局部變量優先級高

6、實例方法

  • 建立對象後可使用對象調用的方法
  • 定在類中方法外
  • 每個方法都是獨立的,不能書寫在其餘方法中
  • 實例方法不能使用static修飾
    • 由於使用static修飾的方法成爲類方法

6.1 案例

  • 實體類--Student
package com.qf.cls;

/**
 * 學生類
 * 	定義了學生的屬性
 * 	定義了sayHi和show方法
 * @author Dushine2008
 *
 */
public class Student {
	// 屬性  
	String name;
	int age;
	String gender;
	double score;
	
	/**
	 * 見面打招呼的方法
	 * @param word	打招呼的內容
	 */
	public void sayHi(String word) {
		System.out.println("我是一個好學生,咱們見面都會說:" + word);
	}
	
	/**
	 * 展現本身信息的方法
	 */
	public void show() {
		System.out.println("個人名字是:" + name + ",個人今年" + age + ",我是" + gender + ",我此次考試的成績是:" + score);
	}
}
  • 測試類TestStudent
package com.qf.cls;

public class TestStudent {
	public static void main(String[] args) {
		// 建立學生對象stu01
		Student stu01 = new Student();
		stu01.name = "張飛";
		stu01.gender = "漢子";
		stu01.age = 16;
		stu01.score = 33;
		
		stu01.sayHi("我乃燕人張翼德");
		stu01.show();
		
		// 建立學生對象stu02
		Student stu02 = new Student();
		stu02.name = "關羽";
		stu02.gender = "壯士";
		stu02.age = 17;
		stu02.score = 88;
		
		stu02.sayHi("打死你個鱉孫!!!");
		stu02.show();
	}
}

7、方法的重載

  • 在同一個類中出現了名字相同的方法
    • 他們的參數列表不一樣
    • 和返回值、修飾符無關
相關文章
相關標籤/搜索