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修飾
6.1 案例
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);
}
}
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、方法的重載