① java:如何封裝集合
對於一般的成員變數,對其提供簡單的getter/setter封裝即可。而對於一個集合類,不能夠這樣做。 對於一個簡單的成員變數,可以這樣:
class Athlete {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// ......
而如果是一個Set/List/Map或數組,應該:
[1]初始化這個集合類;
[2]提供對單個元素的add/remove;
[3]提供加入另一個集合的方法。如果是基於此初始化,則先保證當前集合無元素;
[4]對於getter方法,應該返回該集合的只讀試圖;
[5]提供當前集合size。
public class Game {
private Set<Athlete> players = new HashSet<Athlete>();// 1
public void addPlayer(Athlete one) {// 2
players.add(one);
}
public void removePlayer(Athlete one) {// 2
players.remove(one);
}
public void addPlayers(Set<Athlete> set) {// 3
Iterator<Athlete> iter = set.iterator();
while (iter.hasNext())
addPlayer(iter.next());
}
public void initializaPlayers(Set<Athlete> set) {// 3
if (getAttendNumbers() > 0)
players.clear();
players.addAll(set);
}
public Set<Athlete> getAllPlayers() {// 4
return Collections.unmodifiableSet(players);
}
public int getAttendNumbers() {// 5
return players.size();
}
② java 封裝是什麼
什麼是封裝?
在定義類的時候,如果可以直接修改類中的欄位那麼就可能會出現以下的情況,age可以設置成1000,score可以設置為10000
所以就引出了封裝的概念,那麼什麼是封裝呢或者說封裝可以實現那些目的
封裝可以隱藏實現的細節
讓使用者只能通過實現寫好的訪問方法來訪問這些欄位,這樣一來我們只需要在這些方法中增加邏輯控制,限制對數據的不合理訪問、
方便數據檢查,有利於於保護對象信息的完整性
便於修改,提高代碼的可維護性
為了實現良好的封裝,需要從兩個方面考慮
把欄位(成員變數)和實現細節隱藏起來,不允許外部直接訪問
把方法暴露出來,讓方法控制這些成員變數進行安全的訪問和操作
因此,封裝就有兩個含義:把該隱藏的隱藏起來,把該暴露的暴露出來。
③ 在JAVA中如何封裝代碼
封裝在java中有兩種表現
1.用類封裝一個事物的屬性和方法。
2.用方法來封裝一個固定的演算法。
樓上所說的其實是封裝的程度不一樣,在面向對象的術語中粒度來表示這個程度。
封裝其實是要看情況而定的,如果你這個類是描述人的,需要這個人完成一些基本的動作,如吃飯,走路,那麼就不用把細胞也封裝進來。但是如果「人」這個類,需要做醫學的研究用,那麼就需要封裝細胞這個屬性了。
代碼打多了就自然能理解了,不是一個復雜的概念。呵呵。
④ 類怎樣實現封裝的
1.基本類型只能按值傳遞,而每個基本類型對應的封裝類是按引用傳遞的。
2.從性能上說java中的基本類型是在堆棧上創建的,而所有的對象類型都是在堆上創建的,(對象的引用在堆棧上創建)。比如
Integer i=new Integer(10); 其中new Integer()是在堆上創建的,而他的引用Integer i是在堆棧上。 封裝類的出現,是為了更方便的使用一些基本類型不具備的方法,比如valueOf(),toString()等等。還有你如果想傳遞一個int對象的引用,而不是值,那隻能用封裝類。
在堆棧上分配內存的調用效率和在堆上分配內存的效率差太多了。雖然在堆棧上分配內存效率高,不過在堆棧上分配內存有內存泄露的問題。(這是一個平庸程序員基本解決不了的問題...)java用了一種很天才的方法提高了在堆上分配內存的效率,盡管如此,java還是慢。他不太可能達到向c++那麼快,盡管他一直在承諾總有一天虛擬機會和機器碼速度一樣快。
⑤ java如何封裝靜態類到一個方法里
可以這樣寫。
public class FileUtil {
private static FileUtil m_uttil = null;
public static FileUtil example() {
if (null == m_uttil) {
m_uttil = new FileUtil();
}
return m_uttil;
}
public void getFile() {
System.out.println("xx");
}
public static void main(String args[]) {
FileUtil.example().getFile();
}
}
請採納,謝謝
⑥ JAVA中什麼是封裝類,如何使用
java中的封裝類是基本類型的封裝成對象。
使用方法:
package wrapper;
public class IntegerTest1 {
public static void main(String[] args)
{
Integer i=new Integer(123);
byte b=i.byteValue();
double d=i.doubleValue();
System.out.println("將Integer封裝類轉換為 byte值為:"+b);
System.out.println("將Integer封裝類轉換為 double值為:"+d);
String s1=Integer.toBinaryString(i);
String s2=Integer.toOctalString(i);
String s3=Integer.toHexString(i);
System.out.println("轉換為二進制的值為:"+s1);
System.out.println("轉換為八進制的值為:"+s2);
System.out.println("轉換為十六進制的值為:"+s3);
}
}
⑦ Java的封裝有哪些
JAVA中常用的封裝方式有以下幾種:
1 、Boolean VS boolean
public final class Boolean extends Object implementsSerializable,Comparable
Boolean 類將基本類型為boolean的值包裝在一個對象中。一個Boolean類型的對象只包含一個類型為boolean的欄位。此外,此類還為boolean和String的相互轉換提供了許多方法,並提供了處理 boolean時非常有用的其他一些常量和方法。
2、 Byte VS byte
public final class Byte extends Number implements Comparable
Byte類將基本類型 byte的值包裝在一個對象中。一個Byte類型的對象只包含一個類型為 byte的欄位。此外,該類還為 byte和 String的相互轉換提供了幾種方法,並提供了處理 byte時非常有用的其他一些常量和方法。
3、 Character VS char
public final class Character extends Object implements Serializable, Comparable Character類在對象中包裝一個基本類型char的值。 Character類型的對象包含類型為char的單個欄位。此外,該類提供了幾種方法,以確定字元的類別(小寫字母,數字,等等),並將字元從大寫轉換成小寫,反之亦然。
4 、Double VS double
public final class Double extends Number implements Comparable Double類在對象中包裝了一個基本類型double的值。每個Double類型的對象都包含一個double類型的欄位。此外,該類還提供了多個方法,可以將double轉換為String,將String轉換為double,還提供了其他一些處理double時有用的常量和方法。
⑧ 請問如何把一段java程序封裝成類
將變數聲明成私有的(private),再提供一個或多個公有的(public)方法實現對該變數的訪問或修改,這樣就達到了封裝的目的。
如下面的程序:
public class A {
private String name ;
private int age;
public void setName(String u_name){
this.name = u_name;
}
public String getName(){
return this.name;
}
public void setAge(int u_age){
this.age = u_age;
}
public int getAge(){
return this.age;
}
}
⑨ java中如何把一個函數封裝成一個類
有一個函數:a
void a(){}
封裝到類B:
class B{
void a(){}
}
這樣就好了,
使用:
B haha=new B();
haha.a();//調用類B的實例haha中的a方法