1. 程式人生 > >JAVA——1.繼承與派生()

JAVA——1.繼承與派生()

(1)程式碼的組成分為兩個部分:函式以及變數
(2)對私有變數的引用:利用自定義public get()以及public set()函式,可以從外部呼叫此變數;
(3)繼承與派生:大學與學校的關係;【暫時:子類可以將父類的私有變數也繼承,只是private作為限制符,限制了使用許可權】
(4)如果一個物件被強制轉型,那他一定在某個地方被自動轉型過;
(5)為什麼需要使用轉型:可以讓同一個爸爸的不同兒子,都實現同一個方法,只要使用爸爸大人的方法就行。
(6)注意點:①常在父類定義一個空型別的建構函式;子類需要實現父類的建構函式,否則報錯 ②

1.  package com.cl.study0726v2;  
2.    
3. public class Manage { 4. 5. public static void main(String[] args) { 6. //建立Student類的物件 格式:類名 物件名 = new 類名(); 7. //自動轉型 8. UNStudent un = new UNStudent(); 9. un.setName("申波"); 10. // un.study(); 11. 12. //強制轉型 13. // UNStudent unst = (UNStudent)un; 14.
// unst.print(); 15. 16. Teacher t = new Teacher(); 17. t.teach(un); 18. 19. } 20. 21. }

程式碼:
//OTM與怪獸互打

Manage.class
import java.util.Scanner;

public class Manage {
    public  static  void main(String args[])
    {
           Otm oxiaoyi=new Otm();
Mostra mxiaoer=new Mostra(); oxiaoyi.setName("OTM"); mxiaoer.setName("MST"); oxiaoyi.setBlood(100); mxiaoer.setBlood(90); while ((oxiaoyi.getBlood()>0 )&& (mxiaoer.getBlood()>0)) { System.out.println("請輸入OTM的攻擊值"); Scanner sac = new Scanner(System.in); int oattack=sac.nextInt(); oxiaoyi.setAttack(oattack); oxiaoyi.Attack(mxiaoer); if(mxiaoer.getBlood()<=0) break; System.out.println("請輸入怪獸的攻擊值"); int mattack=sac.nextInt(); mxiaoer.setAttack(mattack); mxiaoer.Attack(oxiaoyi); } } }
Mostra.class
public class Mostra extends Object {
//    private String  mname;
//    private int mblood;
//    private int mattack;
//    //獲取函式
//    public void setName(String n)
//    {
//        mname=n;
//    }
//    public String  getName()
//    {
//        return mname;
//    }
//    public void setBlood(int b)
//    {
//        mblood=b;
//    }
//    Mostra(int  m)
//    {
//        mblood=m;
//    }
//
//    public int  getBlood()
//    {
//        return mblood;
//    }
//    public void setAttack(int a)
//    {
//        mattack=a;
//    }
//    public int  getAttack()
//    {
//        return mattack;
//    }
//    //怪獸的打擊之戰
//    //怪獸大otm,打掉了XX血量,otm剩餘xx血量
//    public void  mostraAttack(Otm o)
//    {
//        //每打一次,otm掉k滴血(k=mattack)
//        //每打一次怪獸掉5滴血
//        o.setBlood(o.getBlood()-mattack);
//        System.out.println(mname+"打"+o.getName()+",打掉了"+getAttack()+","+o.getName()+"剩餘"+o.getBlood()+"血量");
//    }


}
Otm.class
public class Otm extends Object {
//    private  String oname;
//    private int oblood;
//    private  int oattack;
//    Otm(int b)
//    {
//        oblood=b;
//    }
//   public void setName(String n)
//    {
//        oname=n;
//    }
//
//    public String  getName()
//    {
//        return oname;
//    }
//    public void setBlood(int b)
//    {
//        oblood=b;
//    }
//    public int  getBlood()
//    {
//        return oblood;
//    }
//
//    public void setAttack(int a)
//    {
//        oattack=a;
//    }
//    public int  getAttack()
//    {
//        return oattack;
//    }
    //otm的打擊之戰
    //otm打怪獸,打掉了k-1血量(攻擊力為k),怪獸剩餘XX血量
//
//    public void  otmAttack(Mostra m)
//    {
//        //每打一次,怪獸掉5滴血,
//        m.setBlood(getBlood()-oattack);
//        System.out.println(oname+"打"+m.getName()+",打掉了"+getAttack()+","+m.getName()+"剩餘"+m.getBlood()+"血量");
//    }

    //OTM不僅可以打怪獸,還可以打BOSS


}
Boss.class
//BOSS是OTM和Mostra的父類

public class Object {
    private  String name;
    private int blood;
    private  int attack;

    public  void Boss()
    {
    }

    public void setName(String n)
    {
        name=n;
    }

    public String  getName()
    {
        return name;
    }
    public void setBlood(int b)
    {
        blood=b;
    }
    public int  getBlood()
    {
        return blood;
    }

    public void setAttack(int a)
    {
        attack=a;
    }
    public int  getAttack()
    {
        return attack;
    }
    //otm的打擊之戰
    //otm打怪獸,打掉了k-1血量(攻擊力為k),怪獸剩餘XX血量

    //本BOss的擊打
    //本boss打bo,打掉了bo的k-1血量(攻擊力為k),bo剩餘XX血量
    public void  Attack(Object bo)
    {
        //每打一次,怪獸掉5滴血,
        bo.setBlood(getBlood()-attack);
        System.out.println(name+"打"+bo.getName()+",打掉了"+getAttack()+","+bo.getName()+"剩餘"+bo.getBlood()+"血量");
    }

}