java方法之間的呼叫以及關係
第一題:
定義一個介面Animal,包含:
1.抽象方法: run()
2.預設方法: breathe(),輸出"動物會呼吸",同時呼叫靜態方法 eat(),私有方法: sleep()
3.靜態方法: eat(),輸出"動物都要吃東西"
4.私有方法: sleep(),輸出"動物都要休息"
定義Dog類實現Animal介面,實現抽象方法run(),輸出"狗跑得飛快"
在測試類中建立Dog類的物件d,通過物件呼叫run()方法和breathe()方法,打印出如下效果:
狗跑得飛快
動物會呼吸
動物都要吃東西
動物都要休息
Dog類:
public class Dog implements Animal{ @Override public void run() { System.out.println("狗跑的飛快"); } @Override public void breathe() { System.out.println("動物會呼吸"); } public void sleep() { System.out.println("動物都要休息"); } }
Animal 類:
public interface Animal { public abstract void run(); public void breathe(); static void eat(){ System.out.println("動物都要吃東西"); } static void sleep(){ System.out.println("動物都要休息"); } }
主方法:
public class Demo01{ public static void main(String[] args) { Animal d=new Dog(); d.run(); d.breathe(); Animal.eat(); Animal.sleep(); } }
第二題:
定義一個介面Phone,包含:
1.抽象方法: playGame()
2.預設方法: sendMessage(),輸出"發簡訊"
3.靜態方法: call(),輸出"打電話"
定義IPhone類實現Phone介面,實現抽象方法playGame(),輸出"打王者農藥,吃雞"
重寫預設方法sendMessage(),輸出"發彩信"
在測試類中,編寫程式碼,打印出如下語句(每句話都需呼叫上述方法列印):
打電話
打王者農藥,吃雞
發彩信
Phone類:
public interface Phone { public abstract void playGame(); public default void sendMessage(){ System.out.println("發簡訊"); } public static void call(){ System.out.println("打電話"); } }
IPhone類:
public class IPhone implements Phone{ @Override public void playGame() { System.out.println("約和她皆失,你知道王者農藥什麼英雄嗎?"); } @Override public void sendMessage() { System.out.println("發彩信"); } }
主方法:
public class Demo02 { public static void main(String[] args) { IPhone p = new IPhone(); Phone.call(); p.playGame(); p.sendMessage(); } }
第三題:
定義一個介面Animal,包含:
1.抽象方法:run()
2.預設方法: sleep(),輸出"動物會休息"
定義一個Dog類,實現Animal介面,
實現抽象方法:run(),輸出"如脫韁的野狗一樣奔跑"
定義自己特有的方法: eat(),輸出"狗吃屎"
定義一個Cat類,實現Animal介面,
實現抽象方法:run(),輸出"奔跑的貓毛都被擼禿了"
定義自己特有的方法: catchMouse(),輸出"貓抓老鼠"
在測試類中定義如下方法:
public static void printAnimal(Animal a){}
要求在方法中編寫程式碼實現如下功能:
在主方法中:
1. Animal b = new Dog();
呼叫方法printAnimal()傳入b物件,能在控制檯輸出:
如脫韁的野狗一樣奔跑
動物會休息
狗吃屎
1. Animal c = new Cat();
呼叫方法printAnimal()傳入c物件,能在控制檯輸出:
奔跑的貓毛都被擼禿了
動物會休息
貓抓老鼠
Animal類:
public interface Animal { public static void sleep(){ System.out.println("動物會休息"); } public abstract void run(); }
Dog類:
public class Dog implements Animal{ @Override public void run() { System.out.println("如脫韁的野狗一樣奔跑"); } public static void eat(){ System.out.println("怎麼對小動物哪麼不好呢,編輯!"); } }
Cat類:
public class Cat implements Animal{ @Override public void run() { System.out.println("奔跑的貓毛都被擼禿了?瞧你能追的上似的"); } public static void catchMouse(){ System.out.println("貓抓老鼠,天經地義"); } }
主方法:
public class Demo03{ public static void printAnimal(Animal a){ } public static void main(String[] args) { Animal b = new Dog(); printAnimal(b); b.run(); Animal.sleep(); Dog.eat(); Animal c = new Cat(); c.run(); Animal.sleep(); Cat.catchMouse(); } }
第四題:
根據要求完成以下功能:
① 定義介面Bluetooth,要求如下:
定義抽象方法: void btFunction()
定義預設方法: void connecting(),要求:輸出"可以連線WIFI"
② 定義抽象類Phone,要求如下:
包含空參、滿參構造和以下成員變數
名稱name( String 型)
生成所有成員變數set/get方法
定義抽象方法:void playMusic(Song song)
③定義類Song
包含空參、滿參構造和以下成員變數
歌手 singer(String 型)
歌名 name( String 型)
生成所有成員變數set/get方法
④ 定義類IPhone,要求如下:
繼承抽象類 Phone,實現介面 Bluetooth
構造方法包括:空參構造和滿參構造方法(String)
重寫抽象方法:
void btFunction(),要求:輸出"支援WIFI功能"
void playMusic(Song song),要求:輸出列印"XXX手機正在播放YYY唱的ZZZ"
PS:XXX是Phone類中的 name屬性值,YYY是Song 類中的 singer屬性值,ZZZ是Song 類中的 name屬性值
⑤ 定義測試類Test,在main方法實現以下功能:
建立並初始化一個IPhone 物件phone和一個Song 物件s,呼叫phone的 btFunction()、connecting()和playMusic(Song song)方法,列印如下:
支援WIFI功能
可以連線WIFI
華為手機正在播放周杰倫唱的菊花殘
Bluetooth 類:
public interface Bluetooth { public static void btFunction() { } public static void connecting(){ System.out.println("可以連線WIFI,誰能把WIFI變為只能自己連"); } }
Phone類:
public abstract class Phone{ String name="華為"; public Phone(String name) { this.name = name; } public Phone() { } public abstract void playMusic(Song song); public String getName() { return name; } public void setName(String name) { this.name = name; } public abstract void playMusic(); }
Song 類:
public class Song extends Phone{ String singer="周杰倫"; String name="菊花殘"; public Song(String singer, String name) { this.singer = singer; this.name = name; } public Song() { } @Override public void playMusic(Song song) { Song s=new Song(); s.setName("菊花殘"); s.setSinger("周杰倫"); } public String getSinger() { return singer; } public void setSinger(String singer) { this.singer = singer; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public void playMusic() { System.out.println(name+"手機正在播放"+getSinger()+"唱的"+getName()); } }
IPhone 類:
public class IPhone extends Phone implements Bluetooth{ Song s=new Song(); public IPhone(String name) { this.name=name; } public IPhonww() { } @Override public void playMusic(Song song) { System.out.println(name+"手機正在播放"+s.getSinger()+"唱的"+s.getName()); } @Override public void playMusic() { System.out.println(name+"手機正在播放"+s.getSinger()+"唱的"+s.getName()); } public static void btFunction() { System.out.println("支援WIFI功能"); } }
主方法:
public class Demo04 { public static void main(String[] args) { IPhone phone=new IPhone(); phone.btFunction(); Bluetooth.connecting(); phone.playMusic(); } }
第五題:
根據要求完成以下功能:
① 定義介面Study,要求如下:
定義抽象方法: void studyLine(Line line)
定義預設方法: void info(),要求:依次呼叫stu1(),stu2()
定義私有方法: void stu1 (),要求:輸出"好好練習,天天向上"
void stu2 (),要求:輸出"鏡頭拍爛,月薪百萬"
②定義類Line,包含空參、滿參構造和以下成員變數
基礎班學習 basicClass(String 型)
就業班學習 emplymentClass(String 型)
生成所有成員變數set/get方法
定義成員方法:void printLine(),要求:輸出"練習路線,基礎班學習:xxx,就業班學習:yyy",
PS: xxx為變數basicClass值,yyy為變數emplymentClass值
③定義類Student,包含空參、滿參構造和以下成員變數
姓名 name(String 型)
年齡 age(int型)
生成所有成員變數set/get方法
定義成員方法:void studying(Study sy),要求:輸出“xxxx練習中”,然後在方法內依次呼叫info(),studyLine (Line line)
PS:xxx為變數name值,引數line需要自行建立並初始化變數basicClass與 emplymentClass
④ 定義測試類Test,在main方法實現以下功能:
建立並初始化一個Student物件stu,呼叫方法 studying(Study sy)
sy為Study的實現類,需要實現studyLine (Line line)抽象方法,實現要求:呼叫引數line的printLine()方法;
示例如下:
蒼井空練習中
好好練習,天天向上
鏡頭拍爛,月薪百萬
學習路線,基礎班學習:JAVASE,就業班學習:JAVAEE
Line 類:
public class Lirt { static String basicClass="JAVASE"; static String emplymentClass="JAVAEE"; public Line(String basicClass, String emplymentClass) { this.basicClass = basicClass; this.emplymentClass = emplymentClass; } public Line() { } public static void printLine(){ System.out.println("練習路線,基礎班學習:"+basicClass+",就業班學習:"+emplymentClass); } public String getBasicClass() { return basicClass; } public void setBasicClass(String basicClass) { this.basicClass = basicClass; } public String getEmplymentClass() { return emplymentClass; } public void setEmplymentClass(String emplymentClass) { this.emplymentClass = emplymentClass; } }
Study 類:
public interface Study { public abstract void studyLine(Line line); static void stu1(){ System.out.println("真是沒什麼話編輯了"); } static void stu2(){ System.out.println("這一天天的不能換換樣"); } }
Student類:
public class Student{ private static String name="小滷蛋"; private static int age; public Student(String name, int age) { this.name = name; this.age = age; } public Student() { } public static void studying() { System.out.println(name+"練習中"); } public void studying(Study sy){ System.out.println(name+"練習中"); } 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 class Demo05 { public static void main(String[] args) { Line.printLine(); Study.stu1(); Study.stu2(); Student.studying(); } }