1繼承
1.1有其父才有其子
2繼承帶來的問題
2.1父類的方法不一定適合子類
? ? 開發(fā)中父類的方法繼承給子類使用萨咳,但是子類使用不太符合子類的情況肥哎,如果子類方法重新定義客冈,重新命名爱葵,又會(huì)導(dǎo)致代碼冗余河劝,開 發(fā)壓力較大。
2.2重寫【Override】
條件
? ? 1重寫是存在與繼承中子類或者【尊從中的實(shí)現(xiàn)類】
? ? 2重寫情況下要求子類方法中的方法和父類中方法聲明完全一致
? ? 3方法體按照子類情況完成
注意
? ? 1子類重寫父類方法慎恒,要求必須加上@Override嚴(yán)格格式檢查
? ? 2@Override會(huì)檢查子類重寫的方法任内,方法聲明是否和父類一致
3abstract關(guān)鍵字【難】
3.1abstract概述
【前提】
? ? abstract修飾的方法子類必須重寫
3.2abstract關(guān)鍵字代碼使用和注釋
package com.qfen.rxs;
abstract class LoLHero {
abstract public void q();
abstract public void w();
abstract public void e();
abstract public void r();
}
class Thresh extends LoLHero {
@Override
public void q() {
System.out.println("死亡判決");
}
@Override
public void w() {
System.out.println("魂引之燈");
}
@Override
public void e() {
System.out.println("厄運(yùn)鐘擺");
}
@Override
public void r() {
System.out.println("幽冥監(jiān)牢");
}
}
class Varus extends LoLHero {
@Override
public void q() {
System.out.println("穿刺之箭");
}
@Override
public void w() {
System.out.println("枯萎箭袋");
}
@Override
public void e() {
System.out.println("惡靈箭雨");
}
@Override
public void r() {
System.out.println("腐敗鎖鏈");
}
}
public class Demo1 {
public static void main(String[] args) {
Thresh saolei = new Thresh();
saolei.q();
saolei.w();
saolei.e();
saolei.r();
Varus varus = new Varus();
varus.q();
varus.w();
varus.e();
varus.r();
}
}
3.3abstract使用特征
1abstract修飾的方法,沒有方法體
2abstract修飾的方法融柬,要求在定義在abstract修飾的類內(nèi)死嗦,或者接口interface內(nèi)
3abstract修飾的類內(nèi),是可能存在abstract修飾的方法粒氧,但是修飾的方法是沒有方法體的
4重載【Overload】
4.1重載要求
要求
? ? 1重載要求在同一個(gè)類內(nèi)越除,或者接口interface內(nèi)
? ? 2重載要求方法名必須一致
? ? 3重載要求方法的參數(shù)必須不一致
? ? 4重載對(duì)于方法的返回值沒有任何的約束
4.2重載能夠解決的問題
1簡(jiǎn)化代碼結(jié)構(gòu)。在同一類名同方法功能一致外盯,但是參數(shù)滿足多樣化
2簡(jiǎn)化程序員的開發(fā)壓力
3能夠做到統(tǒng)一化處理方式【后面項(xiàng)目中案例給大家安排】
4.3代碼演示
package com.qfen.rxs;
class Person {
public void game() {
System.out.println("大吉大利摘盆,今晚吃雞");
}
public void game(String name) {
System.out.println("玩" + name);
}
public void game(String name, int time) {
System.out.println("玩" + time + "小時(shí)" + name);
}
}
public class Demo2 {
public static void main(String[] args) {
Person person = new Person();
person.game();
person.game("LoL");
person.game("WOT", 2);
}
}
5this關(guān)鍵字補(bǔ)充
5.1this關(guān)鍵字復(fù)習(xí)
this關(guān)鍵字用于在方法中區(qū)別成員變量和局部變量,解決就近原則問題
5.2在一個(gè)構(gòu)造方法中饱苟,通過this關(guān)鍵字調(diào)用其他構(gòu)造方法
格式?
? ? 1要求在一個(gè)構(gòu)造方法中孩擂,Constructor
? ? 2this(實(shí)際參數(shù));
? ? 3會(huì)根據(jù)實(shí)際參數(shù)的類型個(gè)數(shù)順序來選擇對(duì)應(yīng)的構(gòu)造方法
package com.qfen.rxs;
class Dog {
private String name;
private String color;
private int age;
public Dog() {
this(null, null, 0);
}
public Dog(String name) {
this(name, null, 0);
}
public Dog(String name, String color) {
this(name, color, 0);
}
public Dog(String name, String color, int age) {
this.name = name;
this.color = color;
this.age = age;
}
}
public class Demo3 {
}
6super關(guān)鍵字
6.1super關(guān)鍵字作用
1. super關(guān)鍵字可以用于在子類和父類之間箱熬,同名成員變量类垦,同名 成員方法調(diào)用時(shí)明確區(qū)分狈邑。2. super關(guān)鍵字可以顯式調(diào)用父類的構(gòu) 造方法,用于初始化父類的成員變量數(shù)據(jù)蚤认。 3. super關(guān)鍵字使用的格式米苹,規(guī)范和this非常類似
7final關(guān)鍵字
7.1基本語(yǔ)法
最終!@优场!?
?final關(guān)鍵字可以修飾 局部變量 有且只能被賦值一次赤炒,賦值之后不可以修改? ? ? ? ? ? ?
成員變量 定義時(shí)必須初始化氯析,未初始化報(bào)錯(cuò) ? ? ? ? ? ? ? ??
?成員方法 使用final修飾的方法為最終方法,不能被重 寫]喊Q诨骸! ? ? ?
?類 沒有子類遵岩,不能被繼承 ? ? ? ? ? ? ? ? ? ? ? ??
?Java中是存在一些類是使用final修飾的 ? ? ? ? ??
?String類