給你一個小的實例代碼:
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)靖邊免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
public class test {
public static void main(String args[]) throws NoSuchMethodException,
IllegalAccessException, InvocationTargetException {
Foo foo = new Foo("這個一個Foo對象!");
Class clazz = foo.getClass();
Method m1 = clazz.getDeclaredMethod("outInfo");
Method m2 = clazz.getDeclaredMethod("setMsg", String.class);
Method m3 = clazz.getDeclaredMethod("getMsg");
m1.invoke(foo);
m2.invoke(foo, "重新設(shè)置msg信息!");
String msg = (String) m3.invoke(foo);
System.out.println(msg);
}
}
class Foo {
private String msg;
public Foo(String msg) {
this.msg = msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getMsg() {
return msg;
}
public void outInfo() {
System.out.println("這是測試Java反射的測試類");
}
}
./ 當(dāng)前目錄。
../ 父級目錄。
/ 根目錄。
人"類"就是一個類如People,里面有很多人類的屬性,比如身高,性別,三圍,年齡,等等 。
那么對象呢? 對象可以根據(jù)類產(chǎn)生出來,所以叫萬事萬物皆對象 。
比如你我他,都是一個具體的由人"類"產(chǎn)生出來的一個對象,那么你也會有這些屬性如身高,性別3圍,年齡啥的。
多用面向?qū)ο?OO)的思想去想你遇到的程序問題,或者分析現(xiàn)實中的事物吧。
電腦中的子目錄很好理解,例如:
1、C:\是父目錄,C:\Windows就是C:\的子目錄。
2、C:\Windows\System32\就是C:\Windows的子目錄。
類是一個抽象的概念,而對象是類抽象概念的實物表達(dá),打個比方,比如水果攤進(jìn)了一批水果(就好比是類),然后我就去問賣家有哪些新鮮的水果。
店家說有蘋果、梨、桃等等(這里的蘋果、梨、桃就是對象),也就是說對象是類的具體表達(dá),
而類則是對象的抽象表達(dá)。
public class Number {
private int n1;
private int n2;
public Number(){}
public Number(int n1, int n2) {
this.n1 = n1;
this.n2 = n2;
}
public int getN1() {
return n1;
}
public void setN1(int n1) {
this.n1 = n1;
}
public int getN2() {
return n2;
}
public void setN2(int n2) {
this.n2 = n2;
}
/**
* 加方法
* @return
*/
public static int addition(Number n){
int i=0;
i=n.getN1()+n.getN2();
return i;
}
public static int subtration(Number n){
int i=0;
i=n.getN1()-n.getN2();
return i;
}
public static int multiplication(Number n){
int i=0;
i=n.getN1()*n.getN2();
return i;
}
public static double division(Number n){
double i=0;
if(n.getN1()!=0){
i=n.getN1()/n.getN2();
}else{
System.out.println("被除數(shù)不可以為0");
}
return i;
}
}
public class test {
public static void main(String[] args) {
Number n=new Number(10,5);
System.out.println("加法:"+Number.addition(n));
System.out.println("減法:"+Number.subtration(n));
System.out.println("乘法:"+Number.multiplication(n));
System.out.println("除法:"+Number.division(n));
}
}
先建立個Game包
然后我做的是分了5個類來做的
TestStartGuess 類
package com.game.guess;
public class TestStartGuess {
/**
* 人機(jī)互動版猜拳游戲
* 程序入口
*/
public static void main(String[] args) {
Game game=new Game();
game.initial();
game.startGame();
}
}
2.Person 類
package com.game.guess;
import java.util.Scanner;
/**
* 用戶類
*階段1完成
* @param Scanner
*/
public class Person {
String name ="匿名";//名字
int score =0;//積分
/**
* 出拳
*@return出拳結(jié)果:1.剪刀 2.石頭 3.布
*/
public int showFist(){
//接收用戶的選擇
Scanner input =new Scanner(System.in);
System.out.print("\n請出拳:1.剪刀 2.石頭 3.布 (輸入相應(yīng)數(shù)字):");
int show=input.nextInt();
//輸出出拳結(jié)果,并返回
switch(show){
case 1:
System.out.println("你出拳:剪刀");
break;
case 2:
System.out.println("你出拳:石頭");
break;
case 3:
System.out.println("你出拳:布");
break;
}
return show;
}
}
3.Computer 類
package com.game.guess;
/**
*計算機(jī)類
*階段2完成
*/
public class Computer{
String name="電腦";//名字
int score = 0;;//積分
/**
*出拳
*@return 出拳結(jié)果:1.剪刀 2.石頭 3.布
*/
public int showFist(){
? ? ? ?//產(chǎn)生隨機(jī)數(shù)
? ? ? ?int show =(int)(Math.random()*10)%3+1;//產(chǎn)生隨機(jī)數(shù),表示電腦出拳
? ? ? ?//輸出出拳結(jié)果并返回
? ? switch(show){
case 1:
System.out.println(name+"你出拳:剪刀");
break;
case 2:
System.out.println(name+"你出拳:石頭");
break;
case 3:
System.out.println(name+"你出拳:布");
break;
}
return show;
}
}
4.Game 類
package com.game.guess;
import java.util.Scanner;
/**
* 游戲類類完全版
* 階段7:功能擴(kuò)展
* @param computer
*
*/
public class Gamecomputer {
Person person; //甲方
Computer computer; ?//乙方
int count;//對戰(zhàn)次數(shù)
/**
* 初始化
*/
public void initial(){
person=new Person();
computer=new Computer();
count=0;
}
/**
* 開始游戲
*/
@SuppressWarnings("resource")
public void startGame(){
System.out.println("-------歡迎進(jìn)入游戲世界-------\n");
System.out.println("\n\t\t***************");
System.out.println("\t\t**猜拳,開始 **");
System.out.println("\t\t***************");
System.out.println("\n\n出拳規(guī)則:1.剪刀,2.石頭,3.布");
Scanner input=new Scanner(System.in);
String exit="n"; //退出系統(tǒng)
do{
initial();//初始化
/*選擇對方角色*/
System.out.print("請選擇對方角色:(1:劉備,2:孫權(quán),3:曹操):");
int role=input.nextInt();
if(role==1){
computer.name="劉備";
}else if(role==2){
computer.name="孫權(quán)";
}else if(role==3){
computer.name="曹操";
}
//擴(kuò)展功能1:輸入用戶姓名
/*輸入用戶姓名*/
System.out.print("請輸入你的姓名:");
person.name=input.next();
System.out.println(person.name+"VS"+computer.name+"對戰(zhàn)\n");
//擴(kuò)展功能1結(jié)束
System.out.print("要開始嗎?(y/n)");
String start=input.next();//開始每一局游戲
int perFist; //用戶出的拳
int compFist; //計算機(jī)出的拳
while(start.equals("y")){
/*出拳*/
? ?perFist=person.showFist();
? ?compFist=computer.showFist();
? ?/*裁決*/
? ?if((perFist==1compFist==1)||(perFist==2compFist==2)||(perFist==3compFist==3)){
? ? ? ?System.out.println("結(jié)果:和局,真衰!嘿嘿,等著瞧吧!\n"); ?//平局
? ? ? ? ? ? ? }else if((perFist==1compFist==3)||(perFist==2compFist==1)||(perFist==3compFist==2)){
? ? ? ? ? ?System.out.println("結(jié)果:恭喜,你贏了!"); ?//用戶贏
? ? ? ? ? ? ? ? ? ? person.score++;
? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? System.out.println("結(jié)果說:^_^,你輸了,真笨!\n"); ?//計算機(jī)贏
? ? ? ? ? ? ? ? computer.score++;
? ? ? ? ? ? ? }
? ? ? ? ? ? ? count++;
? ? ? ? ? ? ? System.out.println("\n是否開始下一輪(y/n):");
? ? ? ? ? ? ? start=input.next();
? ? ? ? ? ? ? }
/*顯示結(jié)果*/
showResult();
//擴(kuò)展功能3:循環(huán)游戲,知道退出系統(tǒng)
System.out.print("\n要開始下一局嗎?(y/n):");
exit=input.next();
? ? ? ?System.out.println();
? ? ? ?//擴(kuò)展功能3結(jié)束
}while(!exit.equals("n"));
System.out.println("系統(tǒng)退出!");
}
/**
* 顯示比賽結(jié)果
*/
public void showResult(){
/*顯示對戰(zhàn)次數(shù)*/
System.out.println("-------------------------------");
? ? ? System.out.println(computer.name+"VS"+person.name);
? ? ? System.out.println("對戰(zhàn)次數(shù):"+count);
? ?
? ? ? //擴(kuò)展功能2:顯示最終的得分
? ? ? System.out.println("\n姓名\t得分");
? ? ? System.out.println(person.name+"\t"+person.score);
System.out.println(computer.name+"\t"+computer.score+"\n");
? ?//擴(kuò)展功能2結(jié)束
? ? ? /*顯示對戰(zhàn)結(jié)果*/
? ? ? int result=calcResult();
? ? ? if(result==1){
? ? ? System.out.println("結(jié)果:打成平手,下次再和你一分高下!");
? ? ? }else if(result==2){
? ? ? System.out.println("結(jié)果:恭喜恭喜!"); ?//用戶獲勝
? ? ? }else{
? ? ? System.out.println("結(jié)果:呵呵,笨笨,下次加油?。?); ?//計算機(jī)獲勝
? ? ? }
System.out.println("--------------------------------");
}
/**
* 計算比賽結(jié)果
* @return1:戰(zhàn)平; 2:用戶贏; 3:電腦贏
*/
public int calcResult(){
if(person.score==computer.score){
return 1;//戰(zhàn)平
}else if(person.scorecomputer.score){
return 2;//用戶贏
}else{
return 3;//電腦贏
}
}
}
5.Start 類
package com.game.guess;
public class StartGuess {
public static void main (String[] args){
Game c = new Game();
c.initial();
c.startGame();
}
}
然后編譯執(zhí)行就OK了
希望能幫到你