DAY06 復習
1. 面向程序:
這種編程思想強調的是程序,凡事親力親為
2. 面向物件:
這種思想強調的是結果,Java就是一門面向物件的語言
不在意完成的程序,在意的是有物件可以幫我干活
比如:我們想吃飯,不在意是哪個廚師做的,也不在意是哪個騎手送的,只要有廚師做,有騎手派送就好了
我們可以把OOP的思維理解成一種行為習慣 思維方式
比如衣服,沒有辦法給出一個明確的定義,但是,只要我們看到任何一件衣服,我們就自動把它歸類到衣服這個分類中,因為你在過去的生活經驗中已經見過太多的衣服,積累經驗
3.類
類指的是型別Type,是指一類事物,使用Java中的class關鍵字來描述
類是抽象的,要提取這一類事物的特征與功能
可以把類理解成設計圖紙,模板
注意:類在現實世界中不是真實存在,它只是一種物件的資料型別
4.物件
物件就是根據類創建出來的一個個獨立且具體的實體
一個類可以創建出多個物件,我們通過物件唯一的地址值區分不同的物件
物件具有各種特征,并且每個物件的每個特征都可以有自己特定的值
物件具有各種行為,每個物件可以執行的操作
5.物件創建程序分析
Phone p = new Phone();創建物件時,記憶體發生了什么?
- 在堆疊記憶體中開辟一塊空間,Phone型別的參考型別變數p,把p壓入堆疊底,此時p只有一個默認值null
- 在堆記憶體中開辟一塊空間用于存放Phone型別的物件
- 要給這個物件進行初始化,比如:String brand = null;
- 此物件已經準備好,所以會生成一個唯一的地址值,并將這個地址值交給堆疊記憶體中的變數p來保存
- 如果后續想要對物件做操作,比如:p.price=88.8;先會找到堆疊中p變數保存的地址值,根據這個地址找到堆中的物件再做進一步的操作
3.面向物件的特征–封裝
3.1為啥要用封裝?
- 封裝可以提高程式的安全性
- 封裝可以讓資源按照我們預先規定的方式來操作
3.2屬性的封裝
用private修飾屬性,一旦屬性被private修飾,就只能在本類中使用,外界無法訪問
所以為了讓外界能夠按照我們提供的方式來呼叫,需要根據屬性生成公共的getXxx()與setXxx()方法
3.2 方法的封裝
方法的封裝也是使用private來修飾方法
如果想要呼叫私有方法的功能,就需要在本類的公共方法里呼叫這個私有方法
4 拓展綜合練習1
package cn.tedu.exec;
/*本類用于面向物件的鞏固練習1*/
public class TestCar {
public static void main(String[] args) {
//4.創建物件進行測驗 創建物件 屬性賦值 查看屬性 呼叫功能
Car c = new Car();
// c.brand = "BMW";
// c.color = "暗夜黑";
// c.price = 9.9;
// c.length = 0.1;
// System.out.println(c.brand);
// System.out.println(c.price);
// System.out.println(c.length);
// System.out.println(c.color);
c.start();
//c.stop();
//6.創建汽車類物件c2,給屬性賦值并查看
Car c2 = new Car();
c2.setBrand("特斯拉");
c2.setColor("五彩斑斕的黑");
c2.setLength(3.6);
c2.setPrice(218888.88);
System.out.println(c2.getBrand());
System.out.println(c2.getColor());
System.out.println(c2.getLength());
System.out.println(c2.getPrice());
c2.start();
//c2.stop();
}
}
//1.分析汽車這一類事物的共同特點,抽象形成類Car
class Car{
//2.定義汽車類的屬性:品牌brand 顏色color 價格price 車長length
//5.封裝4個屬性,并提供對應的get與set方法
private String brand;
private String color;
private double price;
private double length;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
//3.1定義汽車啟動的方法
public void start(){
System.out.println("我的小車車啟動啦~");
stop();
}
//3.2定義汽車停止的方法
//7.封裝停止的方法,并呼叫停止方法的功能
private void stop(){
System.out.println("唉呀媽呀,熄火了~");
}
}
5 拓展綜合練習2
package cn.tedu.exec;
/*本類用于面向物件綜合練習案例2*/
public class TestDog {
public static void main(String[] args) {
//5.1創建本類的物件1
Dog d1 = new Dog();
//給物件的屬性賦值:哮天犬 999 細犬 二郎神 10000,并查看
d1.setName("哮天犬");
d1.setAge(999);
d1.setKind("細犬");
d1.setHost("二郎神");
d1.setPrice(10000);
System.out.println(d1.getName());
System.out.println(d1.getAge());
System.out.println(d1.getKind());
System.out.println(d1.getHost());
System.out.println(d1.getPrice());
//6.創建小狗類的物件2并呼叫小狗類的功能
Dog d2 = new Dog();
d2.run();
d2.eat(6);
d2.sleep(8.8);
d2.play("二郎神");//純呼叫play()的功能
//既呼叫了play()的功能,又接到了回傳值
String s = d2.play("沉香");
System.out.println(s);//列印接到的回傳值
//沒有定義多余的變數,直接列印方法的回傳值
System.out.println(d2.play("三圣母"));
//d2.bark();//私有方法不可以在其他類呼叫
}
}
//1.抽象形成一個小狗類Dog
class Dog{
//2.屬性:名字name 年齡age 品種kind 主人host 價格price
//3.1封裝所有的屬性
private String name;
private int age;
private String kind;
private String host;
private double price;
//方法格式:修飾符 回傳值型別 方法名(引數串列){方法體}
//4.1添加小狗類的功能1
//跑run:無參,無回傳值,列印:小狗Dog跑的老快啦~
public void run(){
System.out.println("小狗Dog跑的老快啦~");
}
//4.2添加小狗類的功能2
//吃eat:引數int n,無回傳值,列印:小狗Dog今晚要吃n根肉骨頭
public void eat(int n){
System.out.println("小狗Dog今晚要吃"+n+"根肉骨頭");
}
//4.3添加小狗類的功能3
//睡覺sleep:引數double num,無回傳值,列印:小狗Dog今天一共睡了num個小時
public void sleep(double num){
System.out.println("小狗Dog今天一共睡了"+num+"個小時");
}
//4.4添加小狗類的功能4
//玩play:引數String host,回傳值String"飛盤",列印:小狗與主人host玩的很開心
public String play(String host){
System.out.println("小狗與主人"+host+"玩的很開心");
bark();//呼叫封裝的方法
return "飛盤";
}
//4.5添加小狗類的功能5
//叫bark:列印:小狗喜歡汪汪叫,此方法要封裝,玩的時候才叫
private void bark(){
System.out.println("小狗喜歡汪汪叫");
}
//3.2提供所有屬性對應的get與set方法
//Alt+Insert->Getter and Setter->Ctrl+A
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getKind() {
return kind;
}
public void setKind(String kind) {
this.kind = kind;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/349594.html
標籤:java
