Ⅰ (1) 對面向對象編程思想的認識 (2) 類、對象的關系及實際中如何定義類、類的欄位、類的屬性、類的方法
面向對象編程,毫無疑問是圍繞「對象」展開的。
一、計算機的一切,就像人的意識一樣,是必須反映物質和物質世界的。而物質世界,具有如下特徵:
1、物以類聚,鳥以群分。——類
2、人上一百,形形色(shai,三聲)色,龍生九子,各有不同——繼承
3、活著就是變臉,不同的場合有不同的面孔——多態性
4、知人知面不知心——封裝
最後,客觀世界有多復雜,面向對象編程就想要多復雜。
二、類就是祖宗父母,對象就是兒孫。關系就是被繼承和繼承的關系
1、分析模型:看要模擬的事物具有怎樣的類別和屬性,具有怎樣的操作、行為,比如人,可以犯罪也可以做好事,犯罪和做好事都需要人的屬性,必須有手有腳有頭腦,有壞心腸或好心腸。
2、分析需求,看編程所需要你獲得哪些信息。比如明明研究人奔跑的速度,你非看他平時的道德評價,那就不好了。
3、抽象提取,把你分析的結果進行整理,去掉不需要的,看那些是一類的,就定義一個類,具有哪些共同屬性,就定義這些屬性,看他們有什麼方法,就定義方法。
4、實現這些類
Ⅱ 什麼是類 什麼是對象 類和對象的區別是什麼 如何定義一個類、類
類的定義:
JAVA中的類是具備某些共同特徵的實體的集合,它是一種抽象的概念;
2.用程序設計的語言來說,類是一種抽象的數據類型,它是對所具有相同特徵實體的抽象;
3.所謂對象就是真實世界中的實體,對象與實體是一一對應的,也就是說現實世界中每一個實體都是一個對象,對象是一種具體的概念。
4.類是對象的集合,對象是類的實例;對象是通過new className產生的,用來調用類的方法;類的構造方法
對象的定義:
在Java中有一句比較流行的話,叫做「萬物皆對象」,這是Java語言設計之初的理念之一。要理解什麼是對象,需要跟類一起結合起來理解。下面這段話引自《Java編程思想》中的一段原話:
「按照通俗的說法,每個對象都是某個類(class)的一個實例(instance),這里,『類』就是『類型』的同義詞。」
從這一句話就可以理解到對象的本質,簡而在Java中有一句比較流行的話,叫做「萬物皆對象」,這是Java語言設計之初的理念之一。要理解什麼是對象,需要跟類一起結合起來理解。下面這段話引自《Java編程思想》中的一段原話:
「按照通俗的說法,每個對象都是某個類(class)的一個實例(instance),這里,『類』就是『類型』的同義詞。」
從這一句話就可以理解到對象的本質,簡而言之,它就是類的實例,比如所有的人統稱為「人類」,這里的「人類」就是一個類(物種的一種類型),而具體到每個人,比如張三這個人,它就是對象,就是「人類」的實例。
類和對象區別:
1,類是一個抽象的概念,它不存在於現實中的時間/空間里,類只是為所有的對象定義了抽象的屬性與行為。就好像「Person(人)」這個類,它雖然可以包含很多個體,但它本身不存在於現實世界上。
2,對象是類的一個具體。它是一個實實在在存在的東西。
3,類是一個靜態的概念,類本身不攜帶任何數據。當沒有為類創建任何對象時,類本身不存在於內存空間中。
4,對象是一個動態的概念。每一個對象都存在著有別於其它對象的屬於自己的獨特的屬性和行為。對象的屬性可以隨著它自己的行為而發生改變。
定義類、方法、屬性:
如果是自己寫,格式為:
public class 類名{ \class就是定義類的關鍵字,注意Java要求類名和文件名一致
變數類型 變數名=初始值;\定義類的屬性
訪問修飾符 [static] 方法返回值類型 方法名(參數1的類型 參數1,參數2的類型 參數2...){ \定義方法,如果是不需要實例化就能使用方法,就加[]裡面的
}
}
創建類的對象:
類名 對象名=new 類名() \如果加了帶參數的構造方法,()裡面必須傳入對應參數的類型
構造方法作用:
構造方法作用就是對類進行初始化。 如果你沒有定議任何構造方法的形式,程式會為你取一個不帶任何參數的構造函數,那麼你產生類的對像時只能用不帶參數的方法。
通過構造方法實例化對象的時候的特點:
如果不添加帶參數的構造方法,那麼默認只能使用無參數的構造方法,如果加了帶參數的構造方法,而沒有添加無參數的構造方法,則只能使用帶參數的構造方法
能否使用==進行兩個對象的比較?
這個答案是肯定的
Ⅲ 如何在Java類中定義類屬性ID
類屬性:又叫做靜態屬性,即被static修飾。
public class Student {
private String name;
private String studentNum;
private String gender;
private Integer age;
private static Integer id;
static{
getId();
}
public Student() {
}
public Student(String name, String studentNum, String gender, Integer age) {
this.name = name;
this.studentNum = studentNum;
this.gender = gender;
this.age = age;
}
public static Integer getId(){
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStudentNum() {
return studentNum;
}
public void setStudentNum(String studentNum) {
this.studentNum = studentNum;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", studentNum=" + studentNum + ", gender=" + gender + ", age=" + age + "]";
}
}
Ⅳ 如何使用自定義屬性
使用屬性可以在設計時對類、properties和方法添加說明,然後在運行時通過反射資訊來檢查它們。本文為我們介紹了在開發應用時如何利用C#自定義屬性。 本文可以從技術文章下載出獲得,其中包含了一個使用定製屬性的Visual Studio專案示例檔。
屬性類是設計時可應用於類、properties和方法的特殊文類。屬性類提供描述元素某些方面屬性的方式或決定依附於該元素的其他類的行為,進而在運行時可以訪問和檢驗這些描述與行為。你可以將屬性類看作為類成員添加特殊修改器的一種方式。 例如,如果你曾經寫過Web服務,那肯定知道要使得方法在整個服務中是公開的,必須要使用WebMethod屬性。這是一個演示屬性應用的很好的例子,因為我們要用WebMethod屬性擴展編程模型。C#中沒有內建的方式來指定某個方法通過Web服務是可見的(因為內建有表明一個方法是私有的方式),因此需要添加WebMethod屬性來滿足這一需要。
設計自定義屬性 設計自定義屬性的過程十分簡單,在設計屬性前只需要考慮以下幾個方面:使用屬性的目的是什麼? 屬性可以以很多方式使用。你需要定義屬性到底要完成什麼功能並確保這些特定功能沒有內建在.NET框架集中。使用.NET修改器要比使用屬性好,因為這將簡化同其他裝配件的集成過程。
屬性必須儲存什麼資訊? 屬性是打算用來指示某個功能的簡單標志嗎?或者屬性是否要儲存資訊?一個屬性可以擁有設計時賦予的一組資訊,並在運行時查看這些資訊。例如,看一下示例應用中的別名屬性。屬性應該駐留在哪個裝配件中? 大多數情況下,可以將屬性包含在使用該屬性的裝配件中。不過也有這樣的例子,將屬性駐留在公共的、羽量級的、共用裝配件中會更好些。這種類型的配置允許客戶使用屬性時不必引用不需要的裝配件。哪些裝配件將會識別屬性? 如果沒有模組讀取屬性,那麼它將一文不值。你很可能將讀取屬性的類放在屬性駐留的同一個裝配件中。然而,正像前面提到的,也有這樣的例子,你想將讀取屬性的方法與屬性自身分別放在不同的裝配件中。
public string SSN{get { return _ssn; }
set { _ssn = value; }
} 作為更復雜一點的例子,假設我們將有一個屬性稱為「Alias」。該屬性的任務是檢查一個property可能擁有別名。這將允許將一個property值映射給另一個property即使批roperty的名字不匹配。這個屬性接受一系列字串值作為映射名。(列表B) 列表B[Alias ("FirstName", "First")]
public string FName{get { return _fName; }
set { _fName = value; }
} 在這個例子中,property「FName」被映射到「FirstName」和「First」,請查看示例應用以更詳細的瞭解這種應用。
public Alias(params string[] names){this.Names = names;}public string[] Names{get { return _names; }
set { _names = value; }}}正如你所看到的,這就是一個普通的類,唯一的例外就是繼承自System.Attribute類。我們不需要作任何特別的事情使它成為一個類。我們只是簡單的定義了一個需要使用的構造函數並創建了一個property和一個存儲資料的私有成員。 列表D是個更簡單的屬性——「Hide」屬性。這個屬性不需要構造函數(使用默認的構建函數),也不儲存資料。因為這個屬性只是一個簡單的標志類型的屬性。 列表DClass Hide : System.Attribute{//This is a simple attribute, that only requires
// the default constructor.}從代碼中讀取屬性 讀取屬性並檢查其中的資料比使用屬性或創建屬性顯著地更加復雜。讀取屬性要求開發人員要對如何使用一個物件的反射資訊有個基本瞭解。如果你不熟悉反射機制,可以閱讀「應用反射」系列文章。 假設我們正在查看一個類,我們想知道該類的那個properties使用了Alias屬性以及都有哪些別名。列表E實現了這個功能。 列表EPrivate Dictionary<string, string> GetAliasListing(Type destinationType){//Get all the properties that are in the
// destination type.
PropertyInfo[] destinationProperties = destinationType.GetProperties();
Dictionary<string, string> aliases = newDictionary<string, string>();
for each (PropertyInfo property in destinationProperties){//Get the alias attributes.
object[] aliasAttributes =
property. GetCustomAttributes( typeof(Alias), true);
//Loop through the alias attributes and
// add them to the dictionary.
foreach (object attribute in aliasAttributes)
foreach (string name in ((Alias)attribute).Names)
aliases.Add(name, property.Name);
//We also need to add the property name
// as an alias.
aliases.Add(property.Name, property.Name);}return aliases;}這段代碼最重要的地方是對GetCustomAttributes的調用以及迴圈遍歷屬性提取別名的地方。 GetCustomAttributes方法可以在我們從物件類型中提取的PropertyInfo類中找到。在上面的應用中,我們將要查詢的屬性類型作為參數傳給GetCustomAttributes方法,同時還將「true」傳遞給該方法使得可以列出繼承的屬性。如何發現匹配的屬性,GetCustomAttributes方法將返回一個物件陣列。還有另外一種超負荷方法可以列出property上的所有屬性,而不管屬性類型是什麼。 一旦有了屬性,我們需要檢查它們並從中提取需要的資訊。這可以通過遍歷由GetCustomAttributes方法得到的物件陣列並將每個物件映射成我們要查詢的屬性來完成。在完成映射後,我們就可以像訪問任意其他類的properties一樣來訪問屬性的properties。 正如我在前面所說,讀取屬性是最困難的部分。然而,一旦我們寫後讀取屬性的代碼後,將來回憶和實施起來就相當容易了。
應用示例 我強烈建議你下載本文包含的這個應用示例。這個應用示例在一個簡單的Windows應用中實現了下面的屬性,並演示了如何讀取和使用它們。Alias——這同上面提到的Alias屬性一樣。當你需要將一種類型的物件翻譯為另一種類型時,需要使用該屬性。例如,如果你有一個Customer物件和一個Address物件,你可能需要將它們都翻譯為一個合並的包含人名和位址的Person物件,當一個不能使用直接映射時,可以使用該屬性。DisplayName——示例代碼中包括檢查一個類實例並將它的property名稱與值輸出到螢幕上的代碼。這個屬性可用於覆蓋送到螢幕顯示的property名稱。例如,一個名為「FName」property可以使用DisplayName屬性,因此它顯示為「First Name」。Examine——這個屬性使得示例應用中的PrintObject方法進入更深一層,並輸出使用了Examine屬性的property的值。例如,示例應用中的Customer物件將Examine屬性應用到Address property。這將指示PrintObject方法輸出address property中的所有資訊。Hide——這個屬性指示PrintObject()方法不要將當前property輸出到螢幕。該屬性用在Customer物件的SSN property上。 示例應用中包含了實現和讀取屬性每一步的注釋,仔細看一下,我敢保證你會發現一些在自己的應用中可以利用的功能。
Ⅳ C# 如何給自定義類的屬性添加方法
你可以把返回類型「int」改成你自定義的一個類如:
public
B
A{get{};set
{};}
;
然後在B類內寫方法
class
B
{void
a(){}};
然後這樣調用:
AA
aa=new
AA();
B
b=new
B();
aa.A=b;//因為屬性的返回類型是對象,所以把對象的地址賦給此屬性就可以找到訪問了
aa.A.a();就可以了;
Ⅵ python中如何定義類
一、類定義:
class <類名>:
<語句>
類實例化後,可以使用其屬性,實際上,創建一個類之後,可以通過類名訪問其屬性
如果直接使用類名修改其屬性,那麼將直接影響到已經實例化的對象
類的私有屬性:
__private_attrs兩個下劃線開頭,聲明該屬性為私有,不能在類地外部被使用或直接訪問
在類內部的方法中使用時self.__private_attrs
類的方法
在類地內部,使用def關鍵字可以為類定義一個方法,與一般函數定義不同,類方法必須包含參數self,且為第一個參數
私有的類方法
__private_method兩個下劃線開頭,聲明該方法為私有方法,不能在類地外部調用
在類的內部調用slef.__private_methods
類的專有方法:
__init__構造函數,在生成對象時調用
__del__析構函數,釋放對象時使用
__repr__列印,轉換
__setitem__按照索引賦值
__getitem__按照索引獲取值
__len__獲得長度
__cmp__比較運算
__call__函數調用
__add__加運算
__sub__減運算
__mul__乘運算
__div__除運算
__mod__求余運算
__pow__稱方
示例:
[python]view plain
#類定義
classpeople:
Ⅶ 在php中如何設置類的屬性,如何調用類的方法
PHP訪問類的屬性、方法使用箭頭語法(->)。這里我給你一個例子供你參考:
<?php
classMyClass{//定義MyClass類
public$name;//定義了一個公有屬性
protected$_age;//定義了一個保護屬性
private$_email;//定義了一個私有屬性
publicfunctionmy_method(){//定義my_method方法
}
protectedfunction_my_method2(){//定義_my_method2方法
}
}
$obj=newMyClass;//實例化
$obj->name='noname';//設置name屬性
$obj->_age=12;//這是錯誤的,不能設置保護屬性
$obj->address='KingStreet.'//設置一個未聲明的屬性是允許的,效果和公有屬性類似,但未賦值前不能使用。
$obj->my_method()//調用公有方法
$obj->_my_method2();//這是錯誤的,不能調用保護方法
你需要理解繼承、公有、保護和私有的概念。
繼承:子類繼承父類的公有、保護屬性和方法。
公有:類的實例可以訪問的屬性和方法。
保護:只能在類的內部及其子類內部訪問的屬性和方法。
私有:只能在類的內部訪問的屬性和方法。
這是個很基礎的問題,建議你多看書。
Ⅷ java如何定義一個類,創建它的成員變數和方法
首先,對於java開發有一定的基礎性了解,相關的環境都安裝配置好。
類的創建,此處以記事本為例,當然有一定基礎之後可以用於Eclipse等快速開發,
(1).新建記事本,例如:MyJava.txt 最終需要將其擴展名更改為:MyJava.java
打開新建好的MyJava.java, 然後書寫public class MyJava{ },注意:如果跟文件名相同,需要用到public 進行修飾,否則 直接 class XXX{ }也可以。
public class MyJava{
//可以創建需要的變數或者常量,需要自行學習 java的基本類型,此處不一一列舉
int a =1;
String s = "wang";
boolean b = true;
MyJava(){
System.out.print("與類名相同,且沒有參數時此為構造函數");
}
public static void show(){
System.out.print("定義方法");
}
//主函數入口
public static void main(String[] args) {
//調用show方法
show();
}
}
cmd 編譯運行 MyJava.java即可
Ⅸ java 怎麼定義屬性
在一個類裡面啊,比如:
每個類的三個組成部分(屬性,構造方法,普通方法)
//學生類
class
Student{
//這就是定義屬性啊
private
int
age;
//年齡屬性
private
String
name;
//姓名屬性
//構造方法
Student(int
age,String
name){
this.age=age;
this.name=name;
}
//普通方法
public
int
getAge(){
return
this.age;
}
.............
}
Ⅹ JAVA的類中如何自定義屬性
給你一個例子
class Example{
private int number1; //定義屬性
public Example(){
//構造函數
}
}
java中不需要析構函數 他的內存交給虛擬機管理了