java面向對象練習題



01.類的成員變量 猜數字游戲一個類A有一個成員變量v有一個初值100。定義一個類對A類的成員變量v進行猜。如果大了則提示大了小了則提示小了。等於則提示猜測成功。

 package LX.CC;import java.util.Scanner;
 public class Test {
     public static void main(String[] args) {
         A a=new A();
         Scanner input=new Scanner(System.in);
         while (1==1){
             System.out.println("請輸入猜測數字:");
             int i=input.nextInt();
             if (i<a.v){
                 System.out.println("小了!");
                 continue;//返回
            }            
             else if (i>a.v){
                 System.out.println("大了!");
                 continue;//返回
            }            
             else {
                 System.out.println("恭喜你,猜對了!");
                 break;//結束
            }
        }    
    }
 }
 運行結果:
 請輸入猜測數字:
 88
 小了!
 請輸入猜測數字:
 120
 大了!
 請輸入猜測數字:
 100
 恭喜你,猜對了!
 

02.類的成員變量 請定義一個交通工具(Vehicle)的類其中有: 屬性速度(speed)體積(size)等等 方法移動(move())設置速度(setSpeed(int speed))加速speedUp(),減速speedDown()等等. 最后在測試類Vehicle中的main()中實例化一個交通工具對象並通過方法給它初始化speed,size的值並且通過打印出來。另外調用加速減速的方法對速度進行改變。

 package LX.CC2;
 public class Vehicle {
     private int speed;
     private String size;
     
     public void move(){
         System.out.println("移動!");
    }
     public void setSpeed(int speed){
         System.out.println("現在我以每小時"+speed+"/km"+"的速度在跑步");
    }
     public void speedUp(){
         Vehicle v=new Vehicle();
         v.setSpeed(10);
    }
     public void speedDown(){
         Vehicle v=new Vehicle();
         v.setSpeed(20);
    }
     public static void main(String[] args) {
         Vehicle v=new Vehicle();
         v.speed=5;
         v.size="50/m^3";
         System.out.println("初始速度為"+v.speed+",我的體重是"+v.size);
         v.speedUp();
         v.speedDown();
    }
 }
 運行結果:
 初始速度為5,我的體重是50/m^3
 現在我以每小時10/km的速度在跑步
 現在我以每小時20/km的速度在跑步

 

03.構造方法 編寫Java程序模擬簡單的計算器。 定義名為Number的類其中有兩個整型數據成員n1和n2應聲明為私有。編寫構造方法賦予n1和n2初始值再為該類定義加addition、減subtration、乘multiplication、除division等公有成員方法分別對兩個成員變量執行加、減、乘、除的運算。 在main方法中創建Number類的對象調用各個方法並顯示計算結果。

 package LX.CC4;
 public class Number {
     private int n1;
     private int n2;
     public Number(int n1,int n2){
         this.n1=n1;
         this.n2=n2;
    }
     public void addition(){
         System.out.println("加法結果是:"+(n1+n2));
    }
     public void subtration(){
         System.out.println("減法結果是:"+(n1-n2));
    }
     public void multiplication(){
         System.out.println("乘法結果是:"+(n1*n2));
    }
     public void division(){
         System.out.println("除法結果是:"+(n1/n2));
    }
     public static void main(String[] args) {
         Number n=new Number(5,5);
         n.addition();
         n.subtration();
         n.multiplication();
         n.division();
    }
 }
 運行結果:
 加法結果是:10
 減法結果是:0
 乘法結果是:25
 除法結果是:1    

04.構造方法 編寫Java程序用於顯示人的姓名和年齡。 定義一個人類Person該類中應該有兩個私有屬性姓名name和年齡age。定義構造方法用來初始化數據成員。再定義顯示display方法將姓名和年齡打印出來。 在main方法中創建人類的實例然后將信息顯示。

 package LX.CC5;
 public class Person {
     private String name;
     private int age;
     public Person(String name,int age){
         this.name=name;
         this.age=age;
    }
     public void disPlay(){
         System.out.println("姓名:"+name);
         System.out.println("年齡:"+age);
    }
     public static void main(String[] args) {
         Person p=new Person("勇敢牛牛",23);
         p.disPlay();
    }
 }
 運行結果:
 姓名:勇敢牛牛
 年齡:23

06.get方法和set方法 定義一個類該類有一個私有成員變量通過構造方法將其進行賦初值並提供該成員的getXXX()和setXXX()方法

提示假設有private String name;則有public void setName(String name){ this.name = name; } public String getName(){ return this.name; }

 package LX.CC6;
 public class Lianxi {
     private int i;
     public Lianxi(int i){
         Lianxi l=new Lianxi();
         l.seti(i);
         l.geti();
         System.out.println("i="+i);
    }
     public Lianxi(){}
     
     public int geti(){
         return i;
    }
     public void seti(int i){
         this.i=i;
    }
     public static void main(String[] args) {
         Lianxi l=new Lianxi(3);
    }
 }
 運行結果:
     i=3
     

07.構造方法與重載 為“無名的粉”寫一個類class WuMingFen 要求:

1.有三個屬性 面碼:String theMa 粉的分量(兩) int quantity 是否帶湯 boolean likeSoup

2.寫一個構造方法 以便於簡化初始化過程 如 WuMingFen f1 = new WuMingFen(“牛肉”,3,true);

3.重載構造方法 使得初始化過程可以多樣化 WuMingFen f2 = new WuMingFen(“牛肉”,2);

4.如何使得下列語句構造出來的粉對象是酸辣面碼、2兩、帶湯的 WuMingFen f3 = new WuMingFen();

5.寫一個普通方法 check() 用於查看粉是否符合要求。即 將對象的三個屬性打印在控制台上。

 package LX.CC7;public class WuMingFen {
     String theMa;//面的屬性
     int quantity;//面的分量
     boolean likeSoup;//是否帶湯
     public WuMingFen(String s,int i,boolean b){
         this.theMa=s;
         this.quantity=i;
         this.likeSoup=b;
    }
     public WuMingFen(String s,int i){
         this.theMa=s;
         this.quantity=i;
    }
     public WuMingFen(String s,boolean b,int i){
         this.theMa=s;
         this.quantity=i;
         this.likeSoup=b;
         if(b==true){ //判斷
             String b1="帶湯的";
             System.out.println(theMa+quantity+"兩"+b1);
        }
    }
     public void check(){
         if(likeSoup==true){ //判斷
             String b1="帶湯的";
             System.out.println("面的屬性:"+"\n"+theMa+"\n分量"+quantity+"\n"+b1);
        }
         else{
             String b1="不帶湯的";
             System.out.println("面的屬性:"+"\n"+theMa+"\n分量"+quantity+"\n"+b1);
        }
    }
     public static void main(String[] args) {
         WuMingFen lian=new WuMingFen("牛肉面",2,false);
         lian.check();
    }
 }
 運行結果:
 面的屬性:
 牛肉面
 分量2
 不帶湯的

08.構造方法的重載 定義一個名為Vehicles 交通工具 的基類 該類中應包含String類型的成員屬性brand 商標 和color 顏色 還應包含成員方法run 行駛 在控制台顯示“我已經開動了” 和showInfo 顯示信息 在控制台顯示商標和顏色 並編寫構造方法初始化其成員屬性。 編寫Car 小汽車 類繼承於Vehicles類 增加int型成員屬性seats 座位 還應增加成員方法showCar 在控制台顯示小汽車的信息 並編寫構造方法。 編寫Truck 卡車 類繼承於Vehicles類 增加float型成員屬性load 載重 還應增加成員方法showTruck 在控制台顯示卡車的信息 並編寫構造方法。 在main方法中測試以上各類。

 package LX.CC8;public class Vehicles {
     String brand;
     String color;
     public void run(){
         System.out.println("我已經開動了");
    }
     public Vehicles(String a,String b){
         this.brand=a;//傳參數
         this.color=b;//傳參數
    }
     public void showInfo(){
         System.out.println("我是一個:"+brand+"\n"+"我的顏色:"+color);
    }
 }
 package LX.CC8;
 public class Car extends Vehicles {
     int seats;
     public Car(String a,String b,int s){
         super(a,b);//獲取父類成員數據
         this.seats=s;//傳參數
    }
     public void showCar(){
         System.out.println("\n"+"我是一個:"+brand+"\n"+"我的顏色是:"+color+"\n"+"我有:"+seats+"個座位~~");
    }
 }
package LX.CC8;
public class Truck extends Vehicles {
    float load;
    public Truck(String a,String b,float l){
        super(a,b);//獲取父類成員數據 
        this.load=l;//傳參數
    }
    public void showTruck(){
        System.out.println("\n"+"我是一個:"+brand+"\n"+"我的顏色是:"+color+"\n"+"我的載重:"+load+"KG");
    }
}
package LX.CC8;
public class Test {
    public static void main(String[] args) {
        Vehicles c1=new Vehicles("奔馳","黑色");// 給成員變量賦值 
        c1.showInfo();
        Car c2=new Car("寶馬","白色",5);// 給成員變量賦值
        c2.showCar();
        Truck c3=new Truck("賓利","灰色",1000);// 給成員變量賦值
        c3.showTruck();
    }
}
運行結果:
我是一個:奔馳
我的顏色:黑色

我是一個:寶馬
我的顏色是:白色
我有:5個座位~~

我是一個:賓利
我的顏色是:灰色
我的載重:1000.0KG

09.構造方法與重載 定義一個網絡用戶類 要處理的信息有用戶ID、用戶密碼、email地址。在建立類的實例時 把以上三個信息都作為構造函數的參數輸入

其中用戶ID和用戶密碼時必須的

缺省的email地址是用戶ID加上字符串”

package LX.CC9;
public class Uerlinfo {
    private int id;
    private String mima;
    private String e_add;
    public Uerlinfo(int i,String m,String e){
        this.id=i;
        this.mima=m; 
        this.e_add=e;
    }
    public Uerlinfo(int i,String m){
        this.id=i;
        this.mima=m;
        this.e_add=id+"@gameschool.com";
    }
    public void showUerlinfo(){
        System.out.println(id+"\n"+mima+"\n"+e_add);
    } 
    public static void main(String[] args) { 
        Uerlinfo u=new Uerlinfo(110,"abc","@gameschool.com");
        Uerlinfo u2=new Uerlinfo(119,"ABC");
        u.showUerlinfo();
    }
}
運行結果:
ID:110
密碼:abc
email地址:@gameschool.com   

10.構造方法與重載、包 編寫Addition類 該類中應包含一組實現兩數相加運算的重載方法。 實現加法運算的方法 應接受兩個參數 即加數和被加數 方法將兩個參數進行加法運算后 返回相加結果。考慮可能針對不同的數據類型進行計算 重載一組方法 包括整型、長整型、浮點型、雙精度浮點型、還有字符串。 在main方法中創建Addition類的實例 分別調用重載方法測試其效果。 應將Addition類打入到包中 以自己名字的拼音為包命名。

package LX.CC10;
import LX.CC.A;
public class Addition {
    //整型
    public void additionInt(int x,int y){
        int sum=x+y;
        System.out.println("sum="+sum);
    }
    //長整型
    public void additionLong(long x,long y){
        long sum=x+y;
        System.out.println("sum="+sum);
    }
    //浮點型
    public void additionFloat(float x,float y){
        float sum=x+y;
        System.out.println("sum="+sum);
    } 
    //雙精度浮點型
    public void additionDouble(double x, double y){
        double sum=x+y;
        System.out.println("sum="+sum);
    }
    //字符串
    public void additionString(String x,String y){ 
        String sum=x+y;
        System.out.println("sum="+sum);
    }
    public static void main(String[] args) {
        Addition a=new Addition();
        a.additionString("6","6");
        a.additionDouble(33.3,33.3);
        a.additionInt(333,333);
    }
}
sum=66
sum=66.6
sum=666

11 .類的成員變量與方法、構造方法 在程序中經常要對時間進行操作但是並沒有時間類型的數據。那么我們可以自己實現一個時間類來滿足程序中的需要。定義名為MyTime的類其中應有三個整型成員時hour分minute秒second為了保證數據的安全性這三個成員變量應聲明為私有。為MyTime類定義構造方法以方便創建對象時初始化成員變量。再定義diaplay方法用於將時間信息打印出來。 為MyTime類添加以下方法 addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分別對時、分、秒進行加減運算。 並為該類重載一組構造方法 以方便使用者能夠以多種形式初始化該類的實例。

package LX1.CC11;
public class MyTime { 
    private int hour;
    private int minute; 
    private int second; 
    public MyTime(int x,int y,int z){
        this.hour=x;
        this.minute=y;
        this.second=z;
    }
    public void display(){
        System.out.println("當前時間是:"+this.hour+":"+this.minute+":"+this.second);
    }
    public void addHour(int hou){
        this.hour=this.hour+hou;
    }
    public void addSecond(int sec){
        this.second=this.second+sec;
    }
    public void addMinute(int min){
        this.minute=this.minute+min;
    } 
    public void subHour(int hou){
        this.hour=this.hour-hou;
    }
    public void subMinute(int min){
        this.minute=this.minute-min;
    } 
    public void subSecond(int sec){
        this.second=this.second-sec;
    }
    public static void main(String[] args) {
        LX.CC3.MyTime T=new LX.CC3.MyTime(3,33,33);
        T.display();
    }
}

12.構造方法與重載 建立一個汽車類 包括輪胎個數 汽車顏色 車身重量等屬性。並通過不同的構造方法創建事例。 至少要求 汽車能夠加速 減速 停車。 要求 命名規范 代碼體現層次 有友好的操作提示。

package LX1.CC12;
public class Car {
    private int tyre;//車座
    private String color;//顏色
    private double weight;//車重
    //java會默認贈送給每一個類一個無參數的構造方法,簡稱無參構造
    //如果你自己定義了構造方法,java就不再贈送你了
    //在創建對象的時候,自動調用方法
    //public 類名(){}
    public Car(){}
    public Car(int t,String c,double w){
        this.tyre=t;
        this.color=c;
        this.weight=w;
    }
    public void accelerate(){
        System.out.println(tyre+"座的車在加速~~");
    }
    public void slowDown(){
        System.out.println(color+"顏色的車在減速~~");
    }
    public void parking(){
        System.out.println(weight+"KG的車在停車!");
    }
    public static void main(String[] args) {
        Car c=new Car(); 
        Car c1=new Car(5,"黑",666.6);
        c1.accelerate(); 
        c1.slowDown();
        c1.parking();
    }
}
運行結果:
5座的車在加速~~
黑顏色的車在減速~~
666.6KG的車在停車!

13.構造方法與重載 創建一個類 為該類定義三個構造函數 分別執行下列操作 1、傳遞兩個整數值並找出其中較大的一個值 2、傳遞三個double值並求出其乘積 3、傳遞兩個字符串值並檢查其是否相同 4、在main方法中測試構造函數的調用

package LX1.CC13;
public class Person {
    private int a;
    private int b;
    private double a1;
    private double a2;
    private double a3;
    private String b1;
    private String b2;
    public Person(int x1,int x2,double x3,double x4,double x5,String x6,String x7){
        this.a=x1;
        this.b=x2;
        this.a1=x3;
        this.a2=x4;
        this.a3=x5;
        this.b1=x6;
        this.b2=x7;
    }
    public void setInt(){
        if (a>b){
            System.out.println("最大的數是:"+a);
        }
        else {
            System.out.println("最大的數是:"+b);
        }
    }
    public void setDoublie(){
        double  c=a1*a2*a3;
        System.out.println("三個double值的乘積是:"+c);
    }
    public void setString(){
        boolean d;
        if (b1.equals(b2)){
            d=true;
            System.out.println(d);
        }
        else{
            d=false;
            System.out.println(d);
        }
    }
    public static void main(String[] args) {
        Person p=new Person(1,2,3,4,5,"CASD","casd");
        p.setInt();
        p.setDoublie();
        p.setString();
    }
}
運行結果:
最大的數是:2
三個double值的乘積是:60.0
false

14.Static關鍵字與普通變量的區別 創建一個名稱為StaticDemo的類 並聲明一個靜態變量和一個普通變量。對變量分別賦予10和5的初始值。在main()方法中輸出變量值。

package LX1.CC14;
public class StaticDemo {
    private static int a=10;
    private int b=5;
    public static void main(String[] args) {
        StaticDemo s=new StaticDemo();
        System.out.println("靜態變量的值是:"+a+"\n"+"普通變量的值是:"+s.b);
    }
}
靜態變量的值是:10
普通變量的值是:5

15.繼承 創建一個名稱為MainPackage的包 使它包含MainClass和MainSubClass類。MainClass類應當包含變量聲明 其值從構造函數中輸出。MainSubClass類從MainClass派生而來。試執行下列操作 創建一個名稱為SamePackage的類 使它導入上述包 並創建一個MainSubClass類的對象。創建MainClass包–package

package LX1.CC15.MainPackage;
public class MainClass {
    public int i=10;
    public MainClass(){
        System.out.println(i);
    }
}
package LX1.CC15.MainPackage;
public class MainSubClass extends MainClass{
    public MainSubClass(){};
}
package LX1.CC15.MainPackage;
public class SamePackage {
    public static void main(String[] args) {
        MainSubClass m=new MainSubClass();
    }
}

17.繼承 創建一個父類和子類 父類有一個數據成員 子類繼承父類的該數據成員 通過構造函數初始化並顯示該數據成員的值。

package LX1.CC17;
public class Father {
    public int f= 666;
}
package LX1.CC17;
public class Son extends Father{
    public void abs(){
        System.out.println(f);
    }
}
package LX1.CC17;
public class Test {
    public static void main(String[] args) {
        Son s=new Son();
        s.abs();
    }
}
運行結果:
666

18.覆蓋、繼承 建立一個汽車Auto類 包括輪胎個數 汽車顏色 車身重量、速度等成員變量。並通過不同的構造方法創建實例。至少要求 汽車能夠加速 減速 停車。 再定義一個小汽車類Car 繼承Auto 並添加空調、CD等成員變量 覆蓋加速 減速的方法

package LX1.CC18;
public class Auto {
    private int tyre;
    private String color;
    private int speed;
    private int weighe;
    public Auto(int tyre, String color, int speed, int weighe) { 
        this.tyre = tyre;
        this.color = color;
        this.speed = speed;
        this.weighe = weighe;
    }
    public void accelerate(){
        System.out.println(tyre+"座的車正在加速~~");
    } 
    public void solwDown(){
        System.out.println(color+"的車正在減速~~");
    }
    public void parking(){
        System.out.println(weighe+"KG的車正在停車~~");
    }
}
package LX1.CC18;
public class Car extends Auto {
    private int air;
    private String CD;
    public Car(int tyre, String color, int speed, int weighe, int air, String CD) {
        super(tyre, color, speed, weighe);
        this.air = air;
        this.CD = CD;
    }
    public void accelerate(){
        System.out.println(air+"。C的車正在加速~~");
    }
    public void solwDown(){
        System.out.println("播放"+CD+"歌曲的車正在減速~~");
    }
    public static void main(String[] args) {
        Car c=new Car(5,"灰色",100,999,24,"許嵩");
        c.accelerate();
        c.solwDown();
        c.parking();
    }
}
運行結果:
24。C的車正在加速~~
播放許嵩歌曲的車正在減速~~
999KG的車正在停車~~

19.抽象類與繼承 設計一個能細分為矩形、三角形、圓形和橢圓形的“圖形”類。使用繼承將這些圖形分類 找出能作為基類部分的共同特征(如校准點)和方法(如畫法、初始化) 並看看這些圖形是否能進一步划分為子類。 本題只考慮實現思想 不考慮具體實現的細節 實現方式可自由發揮。

package LX1.CC19;
//矩形
public class Rectangle extends Graohical {
//初始化 
public void inciPient(){
    System.out.println("矩形初始化...");
}
//畫圖
public void draWing(){
    System.out.println("正在使用矩形畫圖...");
   }
}
package LX1.CC19;
//三角形
public class Triangle extends Graohical{
//初始化
    public void inciPient(){
        System.out.println("三角形初始化...");
    }
//畫圖
    public void draWing(){
        System.out.println("正在使用三角形畫圖...");
    }
}
package LX1.CC19;
//圓形
public class Circular extends Graohical{
//初始化
    public void inciPient(){
        System.out.println("圓形初始化...");
    }
//畫圖
    public void draWing(){
        System.out.println("正在使用圓形畫圖...");
    }
}
package LX1.CC19;
//橢圓
public class Ellipse extends Graohical {
//初始化
    public void inciPient(){
        System.out.println("橢圓初始化...");
    }
//畫圖
    public void draWing(){ 
        System.out.println("正在使用橢圓畫圖...");
    }
}
package LX1.CC19;
//圖形
public class Graohical {
    //初始化
    public void inciPient(){
        System.out.println("圖形初始化...");
    }
    //畫圖
    public void draWing(){
        System.out.println("正在使用圖形畫圖...");
    }
}
package LX1.CC19;
public class Person {
    //把Graohical的方法進行整合
    public void CSH(Graohical gra){
        gra.inciPient();
        gra.draWing();
    }
}
package LX1.CC19;
public class Text {
    public static void main(String[] args) {
        //把子類的對象賦值給父類的引用(變量)向上轉型
        Graohical gra1=new Rectangle();
        Graohical gra2=new Triangle();
        Graohical gra3=new Circular(); 
        Graohical gra4=new Ellipse();
        Person p=new Person();
        p.CSH(gra1);
        p.CSH(gra2);
        p.CSH(gra3);
        p.CSH(gra4);
    }
}
運行結果:
矩形初始化...
正在使用矩形畫圖...
三角形初始化...
正在使用三角形畫圖...
圓形初始化...
正在使用圓形畫圖...
橢圓初始化...
正在使用橢圓畫圖...

20.抽象類 創建一個Vehicle類並將它聲明為抽象類。在Vehicle類中聲明一個NoOfWheels方法 使它返回一個字符串值。創建兩個類Car和Motorbike從Vehicle類繼承 並在這兩個類中實現NoOfWheels方法。在Car類中 應當顯示“四輪車”信息 而在Motorbike類中 應當顯示“雙輪車”信息。創建另一個帶main方法的類 在該類中創建Car和Motorbike的實例 並在控制台中顯示消息

package LX1.CC20;
//抽象類,抽象方法
public abstract class Vehicle {
    public abstract void NoOfWheels();
}
package LX1.CC20;
//子類
public class Car extends Vehicle{
    public  void NoOfWheels(){
        System.out.println("貓有四個腳~~");
    }
 }
package LX1.CC20;
//子類
public class Motorbike extends Vehicle {
    public  void NoOfWheels(){
        System.out.println("摩托車是雙輪車~~");
    }
}
package LX1.CC20;
public class Text {
    public static void main(String[] args) {
        Vehicle v1=new Car();
        Vehicle v2=new Motorbike();
        v1.NoOfWheels();
        v2.NoOfWheels();
    }
}
運行結果:
貓有四個腳~~
摩托車是雙輪車~~

21.抽象類 創建一個Vehicle類並將它聲明為抽象類。在Vehicle類中聲明一個NoOfWheels方法 使它返回一個字符串值。創建兩個類Car和Motorbike從Vehicle類繼承 並在這兩個類中實現NoOfWheels方法。在Car類中 應當顯示“四輪車”信息 而在Motorbike類中 應當顯示“雙輪車”信息。創建另一個帶main方法的類 在該類中創建Car和Motorbike的實例 並在控制台中顯示消息。

22.接口 創建一個名稱為Vehicle的接口 在接口中添加兩個帶有一個參數的方法start()和stop()。在兩個名稱分別為Bike和Bus的類中實現Vehicle接口。創建一個名稱為interfaceDemo的類 在interfaceDemo的main()方法中創建Bike和Bus對象 並訪問start()和stop()方法。

package LX2.CC22;
public interface Vehicle {
    public void start();
    public void stop();
}
package LX2.CC22;
public class Bike implements Vehicle{
    public void start(){
        System.out.println("我是bike,我正在行駛中~~~");
    }
    @Override
    public void stop() {
        System.out.println("我是bike,我正在停車~~~");
    }
    ;
}
package LX2.CC22;
public class Bus implements Vehicle {
    @Override
    public void start() {
        System.out.println("我是bus,我正在行駛中~~~");
    }
    @Override
    public void stop() {
        System.out.println("我是bus,我正在停車~~~");
    }
}
package LX2.CC22;
public class interfaceDemo  {
    public static void main(String[] args) {
        Vehicle v1=new Bike();
        Vehicle v2=new Bus();
        v1.start();
        v1.stop();
        v2.start();
        v2.stop();
    }
}
運行結果:
我是bike,我正在行駛中~~~
我是bike,我正在停車~~~
我是bus,我正在行駛中~~~
我是bus,我正在停車~~~

23.接口 創建一個名稱為Vehicle的接口 在接口中添加兩個帶有一個參數的方法start()和stop()。在兩個名稱分別為Bike和Bus的類中實現Vehicle接口。創建一個名稱為interfaceDemo的類 在interfaceDemo的main()方法中創建Bike和Bus對象 並訪問start()和stop()方法

24.抽象類、繼承、接口綜合 設計一個系統 XXX門的實現過程 流程 設計一張抽象的門Door 那么對於這張門來說 就應該擁有所有門的共性 開門openDoor()和關門closeDoor() 然后對門進行另外的功能設計,防盜--theftproof()、防水--waterproof()、防彈--bulletproof()、防火、防銹…… 要求 利用繼承、抽象類、接口的知識設計該門接口

package LX2.CC23;
//聲明接口類
public interface Imen {
    public void threfproof();
    public void waterproof();
    public void fireproof();
    public void bulletproof();
    public void rustproof();
}
package LX2.CC23;
//抽象類
public abstract class Door {
    public void openDoor(){};
    public void closeDoor(){};
}
package LX2.CC23;
//類只能單繼承.接口是多實現
//
public class Man extends Door implements Imen {
    @Override //表示重寫的意思   
    public void openDoor() {
        System.out.println("我能把門打開~~");
    }
    @Override
    public void closeDoor() {
        System.out.println("我能把門關閉~~");
    }
    @Override
    public void threfproof() {
        System.out.println("我能夠防盜~~");
    }
    @Override
    public void waterproof() {
        System.out.println("我能夠防水~~");
    }
    @Override
    public void fireproof() {
        System.out.println("我能夠防火~~");
    }
    @Override
    public void bulletproof() {
        System.out.println("我能夠防彈~~");
    }
    @Override
    public void rustproof() {
        System.out.println("我能夠防銹~~");
    }
}
package LX2.CC23;
public class Lianxi {
    public static void main(String[] args) {
        Man m=new Man();
        m.openDoor();
        m.closeDoor();
    }
}
運行結果:
我能把門打開~~
我能把門關閉~~

26. 要求:有三種交通工具飛機、輪船、汽車

它們有各自的行駛方式(水、路、空)

它們有各自的載人數量

它們有各自的行駛速度

只有輪船和汽車可以打開窗子

用多態和接口實現:

package LX2.CC26;
public class jiaotonggongju {
    private String work;
    private int seat;
    private double speed;
    public String getWork() {
        return work;
    } 
    public int getSeat() {
        return seat;
    }
    public double getSpeed() {
        return speed;
    }
    public void setWork(String work) {
        this.work = work;
    }
    public void setSeat(int seat) {
        this.seat = seat;
    }
    public void setSpeed(double speed) {
        this.speed = speed;
    }
    public void Howwork(String b){
    }
    public void HMseat(int a){
    } 
    public void HMspeed(double c){
    }
}
package LX2.CC26;
public interface OpenWindow {
    public abstract void open();
}
package LX2.CC26;
public class plan extends jiaotonggongju{
    public void Howwork(String b){
        this.setWork(b);
        System.out.println("飛機的工作方式為:"+getSeat());
    }
    public void HMseat(int a){
        this.setSeat(a);
        System.out.println("飛機能坐的人數為:"+getSeat());
    }
    public void HMspeed(double c) {
        this.setSpeed(c);
        System.out.println("飛機的速度為:" + getSpeed());
    }
}
package LX2.CC26;
public class ship extends jiaotonggongju implements OpenWindow{
    public void Howwork(String b){
        this.setWork(b);
        System.out.println("船的工作方式為:"+getSeat());
    }
    public void HMseat(int a){
        this.setSeat(a);
        System.out.println("船能坐的人數為:"+getSeat());
    }
    public void HMspeed(double c) {
        this.setSpeed(c);
        System.out.println("船的速度為:" + getSpeed());
    } 
    public void open(){
        System.out.println("船可以打開窗子");
    }
}
package LX2.CC26;
public class car extends jiaotonggongju implements OpenWindow{
    public void Howwork(String b){
        this.setWork(b);
        System.out.println("汽車的工作方式為:"+getSeat());
    }
    public void HMseat(int a){
        this.setSeat(a);
        System.out.println("汽車能坐的人數為:"+getSeat());
    }
    public void HMspeed(double c) {
        this.setSpeed(c);
        System.out.println("汽車的速度為:" + getSpeed());
    }
    public void open(){ 
        System.out.println("汽車可以打開窗子");
    }
}
package LX2.CC26;
public class Text001 {
    public static void main(String[] args) {
        AAA(new car(),"陸地行駛",20,90.0);
        AAA(new plan(),"空中行駛",60,1000.0);
        AAA(new ship(),"水上行駛",40,300.0);
        SSS();
    }
    public static void AAA(jiaotonggongju Q,String a, int b, double c){
        Q.HMseat(b);
        Q.HMspeed(c);
        Q.Howwork(a);
    } 
    public static void SSS(){
        OpenWindow C=new car();
        C.open();
        OpenWindow D=new ship();
        D.open();
    }
}
汽車能坐的人數為:20
汽車的速度為:90.0
汽車的工作方式為:20
飛機能坐的人數為:60
飛機的速度為:1000.0
飛機的工作方式為:60
船能坐的人數為:40
船的速度為:300.0
船的工作方式為:40
汽車可以打開窗子
船可以打開窗子




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM