當前位置:首頁 » 編程語言 » java類結構

java類結構

發布時間: 2022-10-02 18:07:19

㈠ 使用java面向對象的思想設計一個即時戰略游戲的類結構 主要類如下: (1)人口類(Person)

package ;

public class Person {
//生命值
private int lifeValue;
//攻擊力
private int attackPower;
//消耗資源數
private int needResource;

public int attack(String select){
return this.lifeValue;
}

public int getLifeValue() {
return lifeValue;
}

public void setLifeValue(int lifeValue) {
this.lifeValue = lifeValue;
}

public int getAttackPower() {
return attackPower;
}

public void setAttackPower(int attackPower) {
this.attackPower = attackPower;
}

public int getNeedResource() {
return needResource;
}

public void setNeedResource(int needResource) {
this.needResource = needResource;
}

}

package ;

public class Nurse extends Person {
public void cure(){
System.out.println("begin cure!");
}
}

package ;

public class Sapper extends Person {
private int collectRes = 0;
//創造建築createConstruction(),採集資源collectResource()
public void createConstruction(){
System.out.println("begin to createConstruction...");
}

public int collectResource(){
return collectRes;
}

}
package ;

public class Player {
//玩家名稱。玩家資源值,玩家所擁有的人口對象,玩家所擁有的建築對象。
private String player_name;
private int player_res;
private Person player_per;
private Construction player_con;

public String getPlayer_name() {
return player_name;
}
public void setPlayer_name(String player_name) {
this.player_name = player_name;
}
public int getPlayer_res() {
return player_res;
}
public void setPlayer_res(int player_res) {
this.player_res = player_res;
}
public Person getPlayer_per() {
return player_per;
}
public void setPlayer_per(Person player_per) {
this.player_per = player_per;
}
public Construction getPlayer_con() {
return player_con;
}
public void setPlayer_con(Construction player_con) {
this.player_con = player_con;
}

}

package ;

public class Person {
//生命值
private int lifeValue;
//攻擊力
private int attackPower;
//消耗資源數
private int needResource;

public int attack(String select){
return this.lifeValue;
}

public int getLifeValue() {
return lifeValue;
}

public void setLifeValue(int lifeValue) {
this.lifeValue = lifeValue;
}

public int getAttackPower() {
return attackPower;
}

public void setAttackPower(int attackPower) {
this.attackPower = attackPower;
}

public int getNeedResource() {
return needResource;
}

public void setNeedResource(int needResource) {
this.needResource = needResource;
}

}
package ;

import java.util.Scanner;

public class PlayTest {

public static void main(String[] args) {
Player p1 = new Player();
Player p2 = new Player();
//設置第一個玩家的游戲信息
p1.setPlayer_name("player1");
//攻擊力
p1.getPlayer_per().attack("a1");
p1.getPlayer_per().setLifeValue(30);
p1.getPlayer_per().setNeedResource(0);
p1.getPlayer_con().setNeedResource(0);
p1.setPlayer_res(0);
//設置第二個玩家的游戲信息
p2.setPlayer_name("player2");
//攻擊力
p2.getPlayer_per().attack("a2");
p2.getPlayer_per().setLifeValue(30);
p2.getPlayer_per().setNeedResource(0);
p2.getPlayer_con().setNeedResource(0);
p2.setPlayer_res(0);

//開始准備資源
p1.getPlayer_per();
p1.getPlayer_con();
p2.getPlayer_per();
p2.getPlayer_con();
//游戲規則
String key1 = "a1";
String key2 = "Sc1";
String key3 = "Sr1";
String key4 = "Nc1";
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();

if(key1.equals(input)){
p1.getPlayer_per().setLifeValue(p1.getPlayer_per().getLifeValue()+1);
p1.getPlayer_per().setNeedResource(p1.getPlayer_per().getNeedResource()+1);
p2.getPlayer_per().setLifeValue(p2.getPlayer_per().getLifeValue()-1);
}else if(key2.equals(input)){
p1.getPlayer_con().setCurrentSum(+1);
p1.setPlayer_con(p1.getPlayer_con());
}else if(key3.equals(input)){
p1.setPlayer_res(p1.getPlayer_res()+1);
}else if(key4.equals(input)){
p1.getPlayer_per().setLifeValue(+1);
p1.setPlayer_per(p1.getPlayer_per());
}
System.out.println("當前玩家1的進攻以及資源");
System.out.println("當前玩家2的進攻以及資源");
}

}

㈡ java開發項目,目錄結構大家一般怎麼劃分

要看採用什麼模式,如果是MVC模式的,就按照模型,視圖,控制器來劃分包名,可以有個工具類的包。學習java推薦選擇千鋒教育。千鋒教育擁有多年IT培訓服務經驗,採用全程面授高品質、高體驗培養模式,

Java培訓出來如何找高薪工作:
1.獲得程序員式思維方式的快速建立知識體系。
2.找到一個合適的方法來實現技術進入,比如注冊一個聲譽良好的培訓機構。
3.閱讀一本書仍然是系統地學習知識的最佳方式,盡管在技術博客或社區論壇上有很多大神。
4.初學者應該積極地提問,依靠別人的經驗並不可恥,關鍵是要用最少的時間來獲得最多的收入。
5.根據大多數受訪者的經驗,閱讀源代碼是最快的增長途徑。
6.HTML5.Python.Java.C.Golang等都是強大而普遍的入門語言,在精通之後再學其他。

想要了解更多關於java的相關信息,推薦咨詢千鋒教育。千鋒教育成立於2011年1月,立足於職業教育培訓領域,公司現有教育培訓、高校服務、企業服務三大業務板塊。教育培訓業務分為大學生技能培訓和職後技能培訓;高校服務業務主要提供校企合作全解決方案與定製服務;企業服務業務主要為企業提供專業化綜合服務。公司總部位於北京,目前已在20個城市成立分公司,現有教研講師團隊300餘人。

㈢ 關於JAVA的問題:什麼是類寫出java中類定義的格式

類(Class)是面向對象程序設計(OOP,Object-Oriented Programming)實現信息封裝的基礎。類是一種用戶定義的引用數據類型,也稱類類型。每個類包含數據說明和一組操作數據或傳遞消息的函數。類的實例稱為對象。

定義一個類的格式如下圖:

(3)java類結構擴展閱讀:

對象可以訪問類的成員,但並不是所有成員都可以被訪問,能否訪問取決於聲明該成員時所用的關鍵字(public/protected/private)。具體規則如下:

1、類的公有成員可以被該類,其派生類和類實例化的對象訪問。

2、類的保護成員可以被該類及其派生類訪問,不可以被該類的對象訪問。

3、類的私有成員可以被該類訪問,不可以被派生類及其該類的對象訪問。

㈣ JAVA數據結構有哪幾種

JAVA數據結構有以下幾種:

1、List:

List是有序的Collection,使用此介面能夠精確的控制每個元素插入的位置。用戶能夠使用索引(元素在List中的位置,類似於數組下 >標)來訪問List中的元素,這類似於Java的數組。

2、Vector:

基於數組(Array)的List,其實就是封裝了數組所不具備的一些功能方便我們使用,所以它難易避免數組的限制,同時性能也不可能超越數組。

另外很重要的一點就是Vector是線程同步的(sychronized)的,這也是Vector和ArrayList 的一個的重要區別。

3、ArrayList:

同Vector一樣是一個基於數組上的鏈表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector好一些,但是當運行到多線程環境中時,可需要自己在管理線程的同步問題。

4、LinkedList:

LinkedList不同於前面兩種List,它不是基於數組的,所以不受數組性能的限制。 它每一個節點(Node)都包含兩方面的內容:節點本身的數據(data),下一個節點的信息(nextNode)。

所以當對LinkedList做添加,刪除動作的時候就不用像基於數組的ArrayList一樣,必須進行大量的數據移動。只要更改nextNode的相關信息就可以實現了,這是LinkedList的優勢。

5、HashSet:

雖然Set同List都實現了Collection介面,但是他們的實現方式卻大不一樣。List基本上都是以Array為基礎。

但是Set則是在 HashMap的基礎上來實現的,這就是Set和List的根本區別。HashSet的存儲方式是把HashMap中的Key作為Set的對應存儲項。

6、HashMap:

基於哈希表的 Map 介面的實現。此實現提供所有可選的映射操作,並允許使用 null 值和 null 鍵。(除了不同步和允許使用 null 之外,HashMap 類與 Hashtable 大致相同。)此類不保證映射的順序,特別是它不保證該順序恆久不變。

7、HashTable:

Hashtable 是一個散列表,它存儲的內容是鍵值對(key-value)映射。Hashtable 繼承於Dictionary,實現了Map、Cloneable、java.io.Serializable介面。

Hashtable 的函數都是同步的,這意味著它是線程安全的。它的key、value都不可以為nul

㈤ java中都有哪些數據結構

數據結構:
①數組 (Array)
在程序設計中,為了處理方便, 把具有相同類型的若干變數按有序的形式組織起來。這些按序排列的同類數
據元素的集合稱為數組。在C語言中, 數組屬於構造數據類型。一個數組可以分解為多個數組元素,這些數組
元素可以是基本數據類型或是構造類型。因此按數組元素的類型不同,數組又可分為數值數組、字元數組、指
針數組、結構數組等各種類別。
②棧 (Stack)
棧是只能在某一端插入和刪除的特殊線性表。它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後
的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來)。
③隊列 (Queue)
一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。進行
插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列中沒有元素時,稱為空隊列。
④鏈表 (Linked List)
一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。
鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:
一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。
⑤樹 (Tree)
樹是包含n(n>0)個結點的有窮集合K,且在K中定義了一個關系N,N滿足 以下條件:
(1)有且僅有一個結點 k0,他對於關系N來說沒有前驅,稱K0為樹的根結點。簡稱為根(root)
(2)除K0外,k中的每個結點,對於關系N來說有且僅有一個前驅。
(3)K中各結點,對關系N來說可以有m個後繼(m>=0)。
⑥堆 (Heap)
在計算機科學中,堆是一種特殊的樹形數據結構,每個結點都有一個值。通常我們所說的堆的數據結構,是指
二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆。
⑦圖 (Graph)
圖是由結點的有窮集合V和邊的集合E組成。其中,為了與樹形結構加以區別,在圖結構中常常將結點稱為頂點,
邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關系。
⑧散列表 (Hash)
若結構中存在關鍵字和K相等的記錄,則必定在f(K)的存儲位置上。由此,不需比較便可直接取得所查記錄。稱
這個對應關系f為散列函數(Hash function),按這個思想建立的表為散列表。
差不多我就知道這些了~

㈥ java什麼是結構型模式

結構型模式是描述如何將類對象結合在一起,形成一個更大的結構,結構模式描述兩種不同的東西:類與類的實例。故可以分為類結構模式和對象結構模式。

在GoF設計模式中,結構型模式有:

1.適配器模式 Adapter

2.橋接模式 Bridge

3.組合模式 Composite

4.裝飾模式 Decorator

5.外觀模式 Facade

6.享元模式 Flyweight

7.代理模式 Proxy

㈦ java集合類框架中類的組織結構,並說明它們之間的聯系與區別。

結構圖一樓給出來了,
聯系:list是可重復的有順序的;set是不重復的無序的;map中的key是不重復的,value是和key一一對應的。
區別:
1. ArrayList是用動態數組實現的,有數組隨機訪問的優點,但插入和刪除操作過多時效率低;LinkedList是用雙向鏈表實現的,插入和刪除操作效率高,但隨機訪問數據不如ArrayList速度快。
2. HashSet是用散列實現的,TreeSet是用紅黑樹(基於二叉平衡樹的變種)實現的,
TreeSet是有序的(這可能與數學中純粹的集合概念不一致,但似乎這世上本就沒有純粹的東西吧),所以放入TreeSet中的對象必須是可比較的,即實現Compareble介面。
3. HashMap和TreeMap,與HashSet、TreeSet類似。

㈧ 介紹下Java程序的結構

Java語言是面向對象的程序設計語言,Java程序的基本組成單元是類,類體中又可包括屬性與方法兩部分。而每一個應用程序都必須包含一個main()方法,含有main()方法的類稱之為主類。


一: Java程序的主類及其格式

作為一個可以獨立運行的Java程序,在它的眾多類中必須要有一個類作為程序的起始類,為了方便,本書把這個類稱為主類。當需要執行一個程序時,人們在java命令後面輸入的便是這個主類的文件名(也是主類名),因此主類文件是Java運行環境建立起來之後第一個被裝入虛擬機的用戶文件。為了使虛擬機可以找到程序運行的起始入口,主類必須為public類,並含有一個在格式上符合約定的入口方法main(),其格式如下:

public static void main(String[] args){

}

其中各參數含義如下。

main:入口方法名稱。

args:命令行參數,這是一個String對象數組。

static:修飾字,說明main()是一個靜態方法(類方法)。

public:修飾字,說明main()具有公有訪問屬性。

於是,主類框架的源代碼如下:

public class 主類名{

public static void main(String[] args){

}

}

Java程序的主類常常使熟悉C/C++的讀者感到迷惑:main()方法不就相當於C/C++程序中的主函數嗎,為什麼非得把它放到一個類里,難道它有什麼不同嗎?

沒錯,Java類中main()方法就相當於C/C++程序中的主函數,是一個入口函數。之所以把它封裝到一個類里,而不像C/C++那樣單獨作為一個函數來處理,就本書作者的理解,大概Java的設計者們有如下幾個方面的考慮。

1)Java既然把所有事物都看成了對象,那麼就沒有理由不把程序也看成對象,因為程序也是一種事物。既然是對象,那麼它就應該屬於某個類並以程序名來命名。既然程序是一種類,那麼main()就應該是這個類的一個方法,只不過它有些特殊,它是一個入口方法,並且對它有些特殊規定,例如其名稱必須為main(),必須是公有靜態方法,有命令行參數等。

2)如果把程序封裝成了類,那麼包括本程序在內的任何程序就都可以根據需要,隨時創建這個類的對象,並通過該對象使用這個類中的資源,這樣就便於資源共享,從而提高程序的靈活性。

3)Java程序是一種以類為基本單位的模塊化程序,程序被編譯後,每一個類會對應生成一個二進制位元組碼類文件。如果把程序也封裝成類,那麼它的文件就與其他類文件統一起來,而不會產生其他類型的文件,因而便於管理。

4)之所以把入口方法封裝到類中,其根本目的就是要盡可能平等地看待所有的類。因為Java的最終目的是要以類為基本模塊來實現可裝配軟體,如果把main()方法封裝到了一個類中,那麼就意味著main()與類的其他方法沒什麼本質區別,只不過是分工不同而已。下面很快就會看到,Java的所有類都可以含有一個入口方法而成為主類。也就是說,在Java程序中根本就沒有主類、次類之分,這里之所以把帶有main()方法的類稱為主類,是為了表達方便。


二: JAVA源程序在命令行下的運行

classBank{
publicvoidinit(){
System.out.println("Yes,Ican");
}
publicstaticvoidmain(Stringargs[]){
BankAccountba1=newBankAccount(100.00);
System.out.print("Beforetransactions,");
ba1.display();
ba1.deposit(74.35);
ba1.withdraw(20.00);
System.out.print("Aftertransactions,");
ba1.display();
Bankb=newBank();
b.init();
}
}
classBankAccount{
privatedoublebalance;
publicBankAccount(doubleopeningBalance){
balance=openingBalance;
}
publicvoiddeposit(doubleamount){
balance+=amount;
}
publicvoidwithdraw(doubleamount){
balance-=amount;
}
publicvoiddisplay(){
System.out.println("balance="+balance);
}
}

三:完整的java源程序應該包括下列部分

package語句;

import語句;

public classDefinition; // 公共的類定義部分,至多隻有一個公共類的定義

// java語言規定該java源程序的文件名必須與該公共類名完全一致

classDefinition; // 類定義部分,可以有0個或多個

interfaceDefinition; // 介面定義部分,可以有0個或多個

package:java編譯器為每個類生成一個位元組碼文件,且文件名與類名相同,這就會帶來一個問題:同名的類會發生沖突。package便可管理類命名空間。

一般地,具有相同功能的類放在一個package中。

一個java源程序至多隻能有一個公共類的定義。

若java源程序有一個公共類的定義,則該源文件名字必須與該公共類的名字完全相同。

若源程序中不包含公共類的定義,則該文件名可以任意取名。

若一個源程序中有多個類定義,則在編譯時將為每個類生成一個。class文件。

三。java編程規范

包名:全小寫的名詞,中間可由點分割,eg:java.awt.event

類名:首字母大寫,多個單詞合成,每個單詞首字母也要大寫,eg: class HelloWorldApp

介面名: 同類名,eg: interface Collection

方法名: 由多個單詞合成,第一個單詞通常為動詞,首字母小寫,中間的每個單詞的首字母都要大寫,eg: balanceAccount, isButtonPressed

變數名: 全小寫,一般為名詞,eg: length

常量名: 基本數據類型的常量名為全大寫,如果由多個單詞構成,可以用下劃線隔開,eg: int YEAR, int WEEK_OF_MONTH

對象類型的常量,則是小寫混合,由大寫字母把單詞隔開

㈨ 請問,什麼是java的類庫結構

ava類庫中有很多包:

  • 以 java.* 開頭的是Java的核心包,所有程序都會使用這些包中的類;

  • 以 javax.* 開頭的是擴展包,x 是extension 的意思,也就是擴展。雖然 javax.* 是對 java.* 的優化和擴展,但是由於 javax.* 使用的越來越多,很多程序都依賴於 javax.*,所以 javax.* 也是核心的一部分了,也隨JDK一起發布。

  • 以 org.* 開頭的是各個機構或組織發布的包,因為這些組織很有影響力,它們的代碼質量很高,所以也將它們開發的部分常用的類隨JDK一起發布。


  • 在包的命名方面,為了防止重名,有一個慣例:大家都以自己域名的倒寫形式作為開頭來為自己開發的包命名,例如網路發布的包會以 com..* 開頭,w3c組織發布的包會以 org.w3c.* 開頭,微學苑發布的包會以 net.weixueyuan.* 開頭……



㈩ 什麼是java 中的類,和c中的結構體有什麼區別

C的結構只擁有數據,程序代碼是以函數形式存在的,來操作數據。
Java的類,是將代碼與數據集成在一起,特定代碼專操作特定數據,能減少很多錯誤,並且將模塊設計與系統集成分離,有利於開發大型應用和團隊協作。

熱點內容
安卓上哪裡下大型游戲 發布:2024-12-23 15:10:58 瀏覽:189
明日之後目前適用於什麼配置 發布:2024-12-23 14:56:09 瀏覽:56
php全形半形 發布:2024-12-23 14:55:17 瀏覽:829
手機上傳助手 發布:2024-12-23 14:55:14 瀏覽:733
什麼樣的主機配置吃雞開全效 發布:2024-12-23 14:55:13 瀏覽:831
安卓我的世界114版本有什麼 發布:2024-12-23 14:42:17 瀏覽:711
vbox源碼 發布:2024-12-23 14:41:32 瀏覽:279
詩經是怎麼存儲 發布:2024-12-23 14:41:29 瀏覽:661
屏蔽視頻廣告腳本 發布:2024-12-23 14:41:24 瀏覽:420
php解析pdf 發布:2024-12-23 14:40:01 瀏覽:821