面向?qū)ο?.0
1、多類合作
1.1PC類
屏幕
????屏幕可以看做是一個類
????成員變量:
????????品牌
????????尺寸
鍵盤
????鍵盤也可以看做是一個類
????成員變量:
????????品牌
????????按鍵個數(shù)
PC電腦類
????成員變量:
????????屏幕類對象
????????鍵盤類對象
????成員方法:
????????換屏幕
????????換鍵盤
????????電腦展示配置
1.2屏幕類代碼實現(xiàn)
/**
* 屏幕類
*
* @author Anonymous
*
*/
public class Screen {
????// 成員變量? Field
????private String name;
????private float size;
????// 構(gòu)造方法 Constructor
????public Screen() {}
????public Screen(String name, float size) {
????????super();
????????this.name = name;
????????this.size = size;
????}
????// setter 和 getter 方法
????public String getName() {
????????return name;
????}
????public void setName(String name) {
????????this.name = name;
????}
????public float getSize() {
????????return size;
????}
????public void setSize(float size) {
????????this.size = size;
????}
}
1.3鍵盤類代碼實現(xiàn)
/**
* 鍵盤類
*
* @author Anonymous
*
*/
public class Keyboard {
????// 成員變量 Field
????private String name;
????private int keyCount;
????// 構(gòu)造方法 Constructor
????public Keyboard() {}
????public Keyboard(String name, int keyCount) {
????????this.name = name;
????????this.keyCount = keyCount;
????}
????// setter 和 getter 方法 Method
????public String getName() {
????????return name;
????}
????public void setName(String name) {
????????this.name = name;
????}
????public int getKeyCount() {
????????return keyCount;
????}
????public void setKeyCount(int keyCount) {
????????this.keyCount = keyCount;
????}
}
1.4PC類代碼實現(xiàn)
/*
PC電腦類
????成員變量:
????????屏幕類對象
????????鍵盤類對象
????成員方法:
????????換屏幕
????????換鍵盤
*/
public class PC {
????// 成員變量 Field
????/**
????* Screen自定義屏幕類對象呢蔫,作為PC類的成員變量
????*/
????private Screen screen;
????/**
????* Keyborad自定義鍵盤類對象,作為PC類的成員變量
????*/
????private Keyboard keyboard;
????// 構(gòu)造方法 Constructor
????public PC() {}
????/**
????* PC類有參數(shù)構(gòu)造方法灼捂,需要的參數(shù)是Screen類對象,和Keyboard類對象
????*
????* @param screen? Screen屏幕類對象
????* @param keyboard Keyboard鍵盤類對象
????*/
????public PC(Screen screen, Keyboard keyboard) {
????????this.screen = screen;
????????this.keyboard = keyboard;
????}
????/**
????* 設(shè)置Screen屏幕類對象成員變量的方法换团,需要的是一個Screen類對象作
????為方法的參數(shù)
????*
????* @param screen Screen類對象
????*/
????public void setScreen(Screen screen) {
????????this.screen = screen;
????}
????/**
????* 獲取屏幕類對象
????*
????* @return Screen類對象
????*/
????public Screen getScreen() {
????????return screen;
????}
????/**
????* 設(shè)置Keyboard鍵盤類對象成員變量的方法悉稠,需要的參數(shù)是一個Keyboard
????鍵盤類對象
????*
????* @param keyboard Keyboard鍵盤類對象
????*/
????public void setKeyboard(Keyboard keyboard) {
????????this.keyboard = keyboard;
????}
????/**
????* 獲取一個鍵盤類對象
????*
????* @return Keyboard鍵盤類對象
????*/
????public Keyboard getKeyboard() {
????????return keyboard;
????}
????/*
????* PC類成員方法,用于展示電腦配置 電腦運行魯大師K野5拿汀!查看電腦配置
????*
????* 在整個方法中辑甜,獲取數(shù)據(jù)都是通過類對象的方式來獲取的衰絮,全部是按照面
????向?qū)ο笏枷雭硗瓿傻?在代碼中要注意方法的調(diào)用者是誰!A状住猫牡!
????* 代碼中存在的兩個getName方法是完成不同的!5讼摺淌友!
????*/
????public void show() {
????????System.out.println("屏幕品牌:" + screen.getName() + " 屏幕尺寸:" + screen.getSize());
????????System.out.println("鍵盤品牌:" + keyboard.getName() + " 鍵盤按鍵個數(shù):" + keyboard.getKeyCount());
????}
}
1.5 main方法
public class Demo {
????public static void main(String[] args) {
????????// 先進貨,既然需要組裝電腦骇陈,需要鍵盤和屏幕
????????// Screen 是一個類型? screen是一個屏幕類對象
????????Screen screen = new Screen("三星", 15.6F);
????????Keyboard keyboard = new Keyboard("雙飛燕", 104);
????????// 組裝電腦 使用屏幕類對象和鍵盤類對象作為參數(shù)震庭,創(chuàng)建PC類對象
????????PC pc = new PC(screen, keyboard);
????????// PC類show方法,展示電腦配置
????????pc.show();
????????System.out.println("------------------------------");
????????// 屏幕不好使你雌,換一個屏幕
????????// 進貨一個新的屏幕
????????Screen screen2 = new Screen("BOE", 24F);
????????// 調(diào)用PC的setScreen器联,更換屏幕
????????pc.setScreen(screen2);
????????// 展示電腦配置
????????pc.show();
????????System.out.println("------------------------------");
????????// 鍵盤不好使,換一個鍵盤
????????// 進貨一個新的鍵盤
????????Keyboard keyboard2 = new Keyboard("阿米洛", 87);
????????// 調(diào)用PC的setKeyboard方法婿崭,更換鍵盤
????????pc.setKeyboard(keyboard2);
????????// 展示電腦配置
????????pc.show();
????}
}
2拨拓、多類合作總結(jié)
1. 類和對象的操作模式
????類是數(shù)據(jù)類型定義
????對象是目前操作成員方法,操作成員變量的核心
2. 這兩組代碼在main方法中基本上全部是一個面向?qū)ο笏枷?/p>
????a. 自定義數(shù)據(jù)類型氓栈,自定義類對象渣磷,作為方法參數(shù)。
????b. 通過類對象來操作代碼方式授瘦,所有的內(nèi)容都是和對象相關(guān)
3. 代碼需要閱讀醋界,一定要閱讀>顾巍!形纺!
????不要斷章取義G鹣馈!挡篓!
? ? 就是的
4. 代碼中要什么你給什么
3婉陷、匿名對象
3.1匿名對象概述
Person person = new Person("騷杰", 66, '男');
Person 類名
person 對象名
new Person(...) 像內(nèi)存的堆區(qū)申請空間帚称,創(chuàng)建一個Person類對象使用的內(nèi)存空間
匿名對象
????沒有名字的對象官研,沒有對象名的對象
格式:
????new 構(gòu)造方法(所需參數(shù))
用途
????1. 提高開發(fā)效率,隱形眼鏡日拋闯睹,一次性筷子
????匿名對象當(dāng)前行使用之后戏羽,如果沒有其他引用數(shù)據(jù)類型的變量保存其地址,
????直接銷毀
????2. 簡化代碼結(jié)構(gòu)
????3. 通過匿名對象直接調(diào)用成員方法
????4. 使用匿名對象作為方法的參數(shù)
3.2代碼演示
class Dog {
????// 成員變量 Field
????String name;
????// 成員方法 Method
????public void sleep() {
????????System.out.println("小狗睡覺~~~");
????}
}
public class Demo1 {
????public static void main(String[] args) {
????????// 常見模式
????????Dog dog = new Dog();
????????dog.sleep();
????????System.out.println("---------------------");
????????// 使用匿名對象直接調(diào)用成員方法
????????// 通過匿名對象調(diào)用方法之后楼吃,當(dāng)前匿名對象銷毀
????????new Dog().sleep();
????????// 只要有new關(guān)鍵字始花,重新創(chuàng)建對象,不存在同一個對象
????????System.out.println(new Dog());
????????System.out.println(new Dog());
????????System.out.println("---------------------");
????????// 匿名對象不推薦使用成員變量孩锡,因為肉包子打狗酷宵,有去無回
????????// 以下代碼中是三個完全不同的Dog類對象,給其中任何一個賦值都是
????????無法取出的
????????new Dog().name = "騷杰";
????????new Dog();
????????System.out.println(new Dog().name);
????????System.out.println("---------------------");
????????Dog dog2 = new Dog();
????????useDog(dog2);
????????// 匿名對象直接作為方法的參數(shù)躬窜,【常用】
????????useDog(new Dog());
????????// 下面這一行代碼浇垦,你們要保證不要問我!H侔ぁ男韧!我只做演示,
????????后面一定會講 緩沖字節(jié)輸入流
????????// BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(new File("C:/aaa/1.txt")));
????}
????/**
????* 該方法需要的參數(shù)是一個Dog類對象
????*
????* @param dog Dog類對象
????*/
????public static void useDog(Dog dog) {
????????dog.sleep();
????}
}
3.3總結(jié)
1. 匿名對象是為了提供開發(fā)效率默垄,節(jié)約內(nèi)存使用此虑,同時讓代碼更加貼近于真實操作
2. 匿名對象常用方式
????第一個是直接使用匿名對象調(diào)用成員方法
????第二個是直接使用匿名對象作為方法的參數(shù)
3. 匿名對象【禁止】使用成員變量
4、繼承【重點】
4.1代碼中比較好理解的繼承
游戲
????英雄聯(lián)盟中的所有英雄
????????血量口锭,藍量朦前,攻擊力,法術(shù)強度鹃操,魔抗韭寸,護甲,攻擊速度组民,CD......
????????每一個英雄都會有以上的屬性棒仍,但是各自使用的方式,技能臭胜,模型是不一樣的
????PUBG
????????很多建筑都是類似的莫其?
????????拼圖樓癞尚,學(xué)區(qū)房,假車庫乱陡,爛尾樓浇揩,二層小樓
????????樓宇之間有很多相似之處,都是基于一種模型實現(xiàn)的
????PUBG人物
????????人物物理模型是一樣的憨颠,速度胳徽,跳躍...
????????裝束不一樣~~~
4.2生活中的繼承
財產(chǎn)繼承
子承父業(yè)
樣貌繼承
家族繼承
祖?zhèn)髅胤?/p>
4.3小總結(jié)
繼承在開發(fā)中是一種抽象的歸納總結(jié)思想,剝離通用的屬性爽彤,通用的方法养盗,簡化之后的開發(fā)壓力。只需要在繼承之后适篙,滿足個性化的實現(xiàn)即可往核。
通過繼承可以優(yōu)化代碼,在JavaWEB開發(fā)中嚷节,繼承大多數(shù)情況下聂儒,都是用來提高方法的復(fù)用度。
4.4Java中繼承如何完成
關(guān)鍵字:
????extends
格式:
????class A extends B { }
????A類是B類的一個子類
????B類是A類的唯一父類
【Java是一門單繼承語言硫痰,一個類有且只能繼承一個父類】
4.5繼承代碼演示
class Father {
????public int height;
????private int testPrivate;
????public void game() {
????????System.out.println("釣魚衩婚,象棋~~~");
????}
????private void privateMethod() {
????????System.out.println("私有化方法");
????}
}
/*
* Son類是Father類的一個子類
* Father類是Son類的唯一父類
*/
class Son extends Father {
????public int age;
????public void study() {
????????System.out.println("子類學(xué)習(xí)方法!PО摺非春!好好學(xué)習(xí),天天向上鳍悠!");
????}
}
public class Demo1 {
????public static void main(String[] args) {
????????// 創(chuàng)建一個Father類對象
????????Father father = new Father();
????????// 通過Father類對象税娜,使用father類內(nèi)的成員變量和成員方法
????????father.height = 170;
????????father.game();
????????System.out.println(father.height);
????????System.out.println("------------------------------------");
????????// 創(chuàng)建一個Son類對象
????????Son son = new Son();
????????// 使用Son類對象,調(diào)用Son類自己的成員變量和成員方法
????????son.age = 16;
????????son.study();
????????System.out.println(son.age);
????????// 使用Son類的對象藏研,調(diào)用通過繼承得到的父類【內(nèi)容】
????????// 可以使用Father類內(nèi)height 成員變量敬矩,height成員變量是使用public修飾的
????????son.height = 172;
????????// 可以使用Father類內(nèi)的game 成員方法,game成員方法使用public修飾
????????son.game();
????????// private修飾的成員變量蠢挡,和成員方法不能繼承給子類使用
????????// The field Father.testPrivate is not visible
????????// son.testPrivate = 10;
????????// The method privateMethod() from the type Father is not visible
????????// son.privateMethod();
????}
}
4.6繼承小總結(jié)
1. A類使用extends關(guān)鍵字繼承B類
????A類是B類的一個子類弧岳,B類是A類的唯一父類
2. 繼承之后,子類可以通過繼承得到父類中非私有化成員變量业踏,和非私有化成員方法
3. 繼承之后禽炬,子類不可以通過繼承得到父類中的私有化成員變量,和私有化成員方法勤家。
????????private修飾的內(nèi)容有且只能在類內(nèi)使用8辜狻!伐脖!