Java是一種面向對象的程式設計語言(Object Oriented Programming:OOP),面向對象的程式設計語言中有類和對象的概念,那麼它們在概念上到底有什麼差別呢?
下面以java語言為例解釋下什麼是類,什麼是對象?
類就是具備某些共同特征的實體的集合,它是一種抽象的資料類型,它是對所具有相同特征實體的抽象。在面向對象的程式設計語言中,類是對一類“事物”的屬性與行為的抽象。
對象就是一個真實世界中的實體,對象與實體是一一對應關系的,意思就是現實世界的每一個實體都是一個對象,是以對象是一個具體的概念。
類是對象的集合,對象是類的執行個體;對象是通過new className産生的,用來調用類的方法;類的構造方法 .。
舉一個例子說明下類,比如Person(人)就是一個類,那麼具體的某個人“張三”就是“人類”這個類的對象,而“姓名、身高、體重”等資訊就是對象的屬性,人的動作比如“吃飯、穿衣”等就是對象的方法。總之類就是有相同特征的事物的集合,而對象就是類的一個具體執行個體。同時類有多态和繼承,例如“人類”可以分為“男人、女人”,“老人、小孩”那麼“男人、女人”就是“人類”的子類等等。
Java語言中對類Person的定義往往如下:
[java] view plain copy
- public class Person {
- private String name; //屬性:姓名
- private int height; //屬性:身高
- private int weight; //屬性:體重
- public Person() {}
- public Person(String name, int height, int weight) {
- this.name = name;
- this.height = height;
- this.weight = weight;
- }
- //... some methods...
- public void doSth() { //行為:
- //... do something
- }
- }
對象是類的具體的個體。比如,張三是類Person的一個對象。Person可能存在無數個對象(就好像地球上存在數十億人一樣)。
方法是被對象調用的比如“張三.穿衣()”,用static修飾的方法是靜态的方法或稱為共享方法,一般用類名直接調用。
Java中,對象的建立可以使用new來建立一個對象。比如:
[java] view plain copy
- Person zhangsan = new Person("Zhangsan", 170, 65); //建立對象:“Zhangshan”
- zhangsan.doSth(); //對象行為:對象自己發出行為
類和對象的差別
1,類是一個抽象的概念,它不存在于現實中的時間/空間裡,類隻是為所有的對象定義了抽象的屬性與行為。就好像“Person(人)”這個類,它雖然可以包含很多個體,但它本身不存在于現實世界上。
2,對象是類的一個具體。它是一個實實在在存在的東西。
3,類是一個靜态的概念,類本身不攜帶任何資料。當沒有為類建立任何對象時,類本身不存在于記憶體空間中。
4,對象是一個動态的概念。每一個對象都存在着有别于其它對象的屬于自己的獨特的屬性和行為。對象的屬性可以随着它自己的行為而發生改變。