JAVA——1.繼承與派生()
阿新 • • 發佈:2019-02-14
(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()+"血量");
}
}