java重寫 繼承封裝的關係
第一題:
1.定義一個Animal類,包含如下行為:
eat() 列印"要吃飯"
run() 列印"會跑步"
sleep() 列印"要睡覺"
2.定義一個Dog類,繼承Animal類,重寫eat(),run()方法
定義自己特有的行為 :
cry() 列印"狗會汪汪叫"
3.定義測試類DogTest, 建立Dog的物件,依次呼叫eat(),run(),sleep(),cry()方法,打印出如下語句
狗要吃那啥
狗跑的如脫韁的野狗
要睡覺
狗會汪汪叫
Animal類:
public class Animal { public void eat(){ System.out.println("要恰飯"); } public void run(){ System.out.println("能跑步"); } public void sleep(){ System.out.println("會睡覺"); } }
Dog類:
public class Dog extends Animal{ @Override public void eat(){ System.out.println("要恰飯啦"); } public void run(){ System.out.println("準備跑步了塞"); } public void cry(){ System.out.println("狗還會說話呢"); } }
主方法:
public class Demo01 { public static void main(String[] args) { Dog d=new Dog(); d.eat(); d.run(); d.sleep(); d.cry(); } }
第二題:
1.定義一個Phone抽象類,包含如下方法:
普通方法: call() 輸出:"打電話"
普通方法: sendMessage() 輸出:"發簡訊"
抽象方法: playGame();
2.定義一個IPhone類,繼承Phone類
重寫sendMessage()方法,輸出:"發彩信"
實現playGame()方法,輸出:"打王者農藥"
定義自己特有的行為 :
siri() 列印"人工智障"
3.定義測試類IPhoneTest, 建立IPhone的物件,呼叫方法,打印出如下語句
打電話
發彩信
打王者農藥
人工智障
Phone類:
public abstract class Phone { public void call(){ System.out.println("可以打電話啊"); } public void sendMessage(){ System.out.println("可以發簡訊啊"); } public abstract void playGame(); }
IPhone類:
public class IPhone extends Phone{ @Override public void playGame() { System.out.println("玩Python動畫"); } @Override public void sendMessage(){ System.out.println("還可以發彩信哈"); } public void siri(){ System.out.println("人工智慧機器人為您服務"); } }
主方法:
public class Demo02 { public static void main(String[] args) { IPhone i=new IPhone(); i.call(); i.sendMessage(); i.playGame(); i.siri(); } }
第三題:
1.定義Person類,包含空參、滿參構造和以下成員變數:
姓名name
年齡age
生成所有成員變數set/get方法
定義方法:void printPerson(),打印出"我是山頂洞人"
2.定義Student繼承於Person類,新增如下屬性
學校 school
生成空參、滿參構造和set/get方法
定義方法:void printStudent(),先輸出"我叫XXX,我今年YYY歲,我現在的學校是:ZZZ" 再呼叫printPerson()方法
3.在測試類中,建立並初始化一個Student 物件 s, 呼叫printStudent()方法,打印出如下語句:
我叫卡特琳娜,我今年19歲,我現在的學校是:戰爭學院
我是山頂洞人
Person類:
public class Person { String name; int age; public Person(String name, int age) { this.name = name; this.age = age; } public Person(String name, int age, String school) { } public Person(){ } 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 void printPerson() { System.out.println("我是中國人"); } }
Student類:
public class Student extends Person{ String school; public Student(String name, int age, String school) { super(name, age,school); } public Student() { } public Student(String school) { this.school = school; } public void printStudent() { System.out.println("我是" + name + "今年" + age + "我現在的學校是" + school); Person p=new Person(); p.printPerson(); } }
主方法:
public class Demo03 { public static void main(String[] args) { Student s1=new Student(); s1.setName("卡特琳娜"); s1.setAge(19); s1.school="戰爭學院"; s1.printStudent(); } }
第四題:
1.定義抽象類Phone,要求如下:
包含空參、滿參構造和以下成員變數
品牌 brand( String 型)
生成所有成員變數set/get方法
定義抽象方法:void playMusic(String s)
2.定義類IPhone,要求如下:
繼承抽象類 Phone
構造方法包括:空參構造和滿參構造方法
重寫抽象方法:
void playMusic(String s),要求:輸出列印"XXX手機正在播放歌曲:s"
PS:XXX是Phone類中的 brand屬性值,s是傳入的引數
3.定義測試類TestDemo,在main方法實現以下功能:
建立並初始化一個IPhone 物件 phone,呼叫phone的playMusic(String s)方法,傳入引數"菊花臺"
打印出如下語句:
華為手機正在播放歌曲:菊花臺
Phone類:
public abstract class Phone { String brand; public Phone(String brand) { this.brand = brand; } public Phone(){ } abstract void playMusic(String s); public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public void call(){ System.out.println("可以打電話啊"); } public void sendMessage(){ System.out.println("可以發簡訊啊"); } public abstract void playGame(); }
IPhone類:
public class IPhone extends Phone{ void IPhone(){ } void IPhone(String brand){ } @Override void playMusic(String s) { System.out.println(brand+"手機正在播放音樂:"+s); } @Override public void playGame() { } }
主方法:
public class Demo04 { public static void main(String[] args) { IPhone phone=new IPhone(); phone.setBrand("華為"); phone.playMusic("菊花爆滿山"); } }
第五題:
1.定義一個Phone類.包含如下屬性
品牌brand
價格price
生成所有成員變數set/get方法,空參構造和有參構造
2.定義一個Person類,包含如下屬性
姓名name
年齡age
生成所有成員變數set/get方法,空參構造和有參構造
定義一個玩手機行為 palyPhone(Phone p) 要求列印:"YYY歲的XXX正在玩手機,手機品牌是ZZZ,價格為QQQ
PS:YYY是Person類中的 age屬性值,XXX是Person 類中的 name屬性值,ZZZ是Phone 類中的 brand屬性值,QQQ是Phone 類中的 price屬性值"
3.在測試類TestDemo中,建立Person物件ren,呼叫ren的 palyPhone(Phone p) 方法,打印出
"40歲的羅永浩正在玩手機,手機品牌是小米,價格為2999"
ps:引數p需要自行建立並初始化變數brand與 price
Phone4類:
public class Phone4 { String brand; int price; public Phone4(String brand, int price) { this.brand = brand; this.price = price; } public Phone4() { } public void Phone4(){ } public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } }
Person4類:
public class Person4 extends Phone4{ String name; int age; public Person4(String brand, int price) { super(brand, price); } public Person4() { super(); } //void palyPhone(Phone4 p){ //} 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 void palyPhone(Object phone4, Object p) { System.out.println(age+"歲的"+name+"正在玩手機,手機品牌是"+brand+"價格為"+price); } }
主方法:
public class Demo05 { private static Object Phone4; public static void main(String[] args) { Person4 ren=new Person4(); ren.setName("羅永浩"); ren.setAge(40); ren.setBrand("小米"); ren.setPrice(2999); Object p = null; ren.palyPhone(Phone4 ,p); } }
第六題:
1.定義抽象類Study,要求如下:
包含空參、滿參構造和以下成員方法
定義抽象方法:void stu(Phone p);
定義普通方法: void info1() 列印"好好學習,天天向上"
定義普通方法: void info2() 列印"鍵盤敲爛,月薪過萬"
2.定義類Phone,要求如下:
包含空參、滿參構造和以下成員變數
品牌 brand
價格 price
生成所有成員變數set/get方法
定義方法:void printPhone(),打印出Phone的具體資訊,如"XXX手機,價格YYY"
ps: XXX為Phone類的brand屬性 yyy為Phone類的price屬性
3.定義類Student,包含空參、滿參構造和以下成員變數
姓名 name(String 型)
年齡 age(int型)
生成所有成員變數set/get方法
定義成員方法:void studying(Learn le),要求:
1.輸出“yyy歲的xxxx學習中”,
2.然後在方法內通過傳入的Learnd物件le依次呼叫info1(),info2(),stu(Phone p)方法
ps: yyy為Student類中的age方法,xxxx為Student類中的name方法,
ps: Learn繼承於Study類,需要實現stu(Phone p)抽象方法,實現要求:呼叫引數p的printPhone()方法;
4.定義測試類中,建立並初始化一個Student 物件 s, 呼叫studying(Learn le)方法,打印出如下語句: