筆記
繼承
子類繼承父類的功能 extends 父類的名稱
例 人---》男人 融求、女人------》經(jīng)理
父類:舅舅
package edu.xcdq.demo;
/**
* @qvthor liuwenzheng
* @date 2021/4/22 16:28
*/
public class Uncle {
private String name ;
private int age ;
// getter setter
public void setName (String name){
this.name = name ;
}
public String getName(){
return name ;
}
public void setAge(int age){
this.age = age ;
}
public int getAge(){
return age ;
}
// 發(fā)紅包
public void fahongbao(){
System.out.println("舅舅再發(fā)紅包");
}
}
子類:大舅
package edu.xcdq.demo;
import edu.xcdq.demo.Uncle;
/**
* @qvthor liuwenzheng
* @date 2021/4/22 16:33
*/
public class UncleOne extends Uncle {
public void chouyan(){
System.out.println("大舅喜歡抽煙");
}
}
子類:二舅
package edu.xcdq.demo;
import edu.xcdq.demo.Uncle;
/**
* @qvthor liuwenzheng
* @date 2021/4/22 16:34
*/
public class Uncletwo extends Uncle {
public void deinkWine(){
System.out.println("二舅喜歡喝酒");
}
}
子類只能繼承一個(gè)父類鹤耍,不能繼承多個(gè)父類 多重繼承
//錯(cuò)誤代碼
public class Uncletwo extends Uncle 蛔琅,Uncleone{
}
子類 多層繼承
//多層繼承
package edu.xcdq.demo;
/**
* @qvthor liuwenzheng
* @date 2021/4/22 17:05
*/
//多層繼承
public class UncleOneSon extends UncleOne{
}
在繼承中類加載的順序
先創(chuàng)建父類抵乓,在創(chuàng)建子類
父類的構(gòu)造方法先于子類構(gòu)造方法的調(diào)用
public class UncleOne extends Uncle {
public UncleOne(){
super(); //調(diào)用父類的構(gòu)造方法
System.out.println("子類大舅的構(gòu)造方法被創(chuàng)建");
}
方法的復(fù)寫(覆寫)override
@Override
public void fahongbao(){
System.out.println("大舅窮了徐鹤,紅包沒了");
}
如果子類沒有復(fù)寫父類的方法趁曼,調(diào)用的是父類的
如果復(fù)寫了父類的方法失暴,在調(diào)用是優(yōu)先調(diào)用子類復(fù)寫后的方法
要求:
1坯门、方法的簽名完全一致
2微饥、方法體不同
Final
final Uncle uncle1 = new Uncle();
uncle1.setName("修改前的名字");
System.out.println(uncle1.getName());
修飾的內(nèi)容不可以發(fā)生改變
修飾的是基本數(shù)據(jù)類型,其值不可以發(fā)生改變
修飾的是引用數(shù)據(jù)類型古戴,引用的地址不能發(fā)生改變(不能指向新的空間)欠橘,但原本引用的空間中的值是可以發(fā)生改變
Demo
package edu.xcdq.demo;
/**
* @qvthor liuwenzheng
* @date 2021/4/22 16:36
*/
public class Demo {
public static void main(String[] args) {
UncleOne longfei = new UncleOne();
longfei.fahongbao();
longfei.chouyan();
Uncletwo uncletwo = new Uncletwo() ;
uncletwo.fahongbao();
uncletwo.deinkWine();
final Uncle uncle1 = new Uncle();
uncle1.setName("修改前的名字");
System.out.println(uncle1.getName());
}
}
Uncle
package edu.xcdq.demo;
/**
* @qvthor liuwenzheng
* @date 2021/4/22 16:28
*/
public class Uncle {
private String name ;
private int age ;
// getter setter
public void setName (String name){
this.name = name ;
}
public String getName(){
return name ;
}
public void setAge(int age){
this.age = age ;
}
public int getAge(){
return age ;
}
// 發(fā)紅包
public void fahongbao(){
System.out.println("舅舅再發(fā)紅包");
}
public Uncle(){
System.out.println("父類的無(wú)參構(gòu)造方法被調(diào)用,父類被創(chuàng)建了");
}
}
Uocleone
package edu.xcdq.demo;
import edu.xcdq.demo.Uncle;
/**
* @qvthor liuwenzheng
* @date 2021/4/22 16:33
*/
public class UncleOne extends Uncle {
public UncleOne(){
super(); //調(diào)用父類的構(gòu)造方法
System.out.println("子類大舅的構(gòu)造方法被創(chuàng)建");
}
public void chouyan(){
System.out.println("大舅喜歡抽煙");
}
@Override
public void fahongbao(){
System.out.println("大舅窮了现恼,紅包沒了");
}
}
Uncletow
package edu.xcdq.demo;
import edu.xcdq.demo.Uncle;
/**
* @qvthor liuwenzheng
* @date 2021/4/22 16:34
*/
public class Uncletwo extends Uncle {
public void deinkWine(){
System.out.println("二舅喜歡喝酒");
}
}
UncleOneSon
package edu.xcdq.demo;
/**
* @qvthor liuwenzheng
* @date 2021/4/22 17:05
*/
//多層繼承
public class UncleOneSon extends UncleOne{
}