java类与对象_Java类与对象
類與對象
1,面向對象編程簡介
Java語言最大的特點在于面向對象的編程設計,并且面向對象的編程設計也在由于Java自身的發展而不斷發展。面向過程編程(C語言)、函數式編程(Scala)、面向對象編程(Java、C++、Python、Ruby)。
所謂的面向過程指的是面對一個問題的解決方案,更多的情況下是不會做出重用的設計思考的,而面向對象的主要設計形式為模塊化設計,并且可以進行重用配置。在整個的面向對象的設計里面更多情況下考慮的是標準,在使用的時候根據標準進行拼裝,而對于面向對象設計有三個主要的特征:
·封裝性:內部的操作對外部而言不可見,當內部的操作都不可直接使用的時候才是安全的;
·繼承性:在已有結構的基礎上繼續進行功能的擴充;
·多態性:是在繼承性的基礎上擴充而來的概念,指的是類型的轉換處理。
在進行面向對象程序的開發之中一般還有三個步驟:
·OOA:面向對象分析;
·OOD:面向對象設計;
·OOP:面向對象編程;
2,類與對象簡介
類是對一類事物的共性的抽象概念,而對象描述的是一個具體的產物。例如:現在將我和另外一個人進行比較時可以立刻區分出我還有別人。
我和其他的人都一樣,都是一個個具體可以使用的個體產物,但是這些個體都有一些共性的標志:人。但是人和人有各不相同,所謂人和人之間的不同依靠的是我們各自的屬性,每一個屬性的集合就構成了一個對象,但是所有鄂屬性都應該是群體的定義,而群體的定義就形成了一個類。
類是一個模板,而對象才是類可以使用的實例,先有類再有對象。
在類之中一般都會有兩個組成:
·成員屬性(Filed):有些時候為了簡化稱其為屬性;
|-一個人的年齡、姓名都是不同的,所以這些對于整體來講就稱為屬性;
·操作方法(Method):定義對象具有的處理行為;
|-這個人可以唱歌、跳舞、游泳、運動;
3,類與對象的定義及使用
在Java之中類是一個獨立的結構體,所以需要使用class來進行定義,而在類之中主要由屬性和方法所組成,那么屬性就是一個個具體的變量,方法就是可以重復執行的代碼。
產生對象的兩種方式:
①聲明并且實例化:類名稱 對象名稱 = new類名稱();
②分步驟完成:
|-聲明對象:類對象 對象名稱=null;
|-實例化對象:對象名稱=new類名稱();
4,對象內存分析
Java之中類屬于引用數據類型,引用數據類型最大的困難之處在于要進行內存的管理,同時進行操作的時候也會發生有內存關系的變化。
如果要進行內存的分析,那么首先給出兩塊最為常見的內存空間:
·堆內存:保存的是對象的具體信息,在程序之中堆內存空間的開辟是通過new完成的;
·棧內存:保存的是一塊堆內存的地址,即:通過地址找到堆內存,而后找到對象內容;
棧溢出StackOverFlow
需要特別引起注意的是,所有的對象在調用類中的屬性或方法的時候必須要實例化完成后才可以執行。
·范例:錯誤的代碼示范
1 classPerson{2 String name;3 intage;4 public voidtell(){5 System.out.println("姓名:"+this.name+",年齡:"+this.age);6 }7 }8 public classMain {9 public static voidmain(String[] args) {10 Person person = null;//聲明對象11 //person=new Person();//實例化對象
12 person.name="萬雨";13 person.age=25;14 person.tell();15 }16 }
1 Exception in thread "main"java.lang.NullPointerException2
3 at Main.main(Main.java:12)
NullPointerException:空指向異常,沒有在堆內存開辟后所產生的問題,并且只有引用數據存在此類問題。整個代碼之中只是聲明了對象,但是并沒有為對象進行實例化,所以此時無法調用。
5,對象引用分析
類本身屬于引用數據類型,既然是引用數據類型,那么就牽扯到內存的引用傳遞,所謂的引用傳遞的本質:同一塊的堆內存空間可以被不同的棧內存引用,也可以更換指向。
這個時候引用傳遞是直接在主方法之中定義的,也可以通過方法實現引用傳遞處理。
引用傳遞可以發生在方法上,這個時候一定要觀察方法的類型,同時也要觀察方法的執行過程。
6,引用與垃圾產生分析
經過一系列的分析之后已經確定,所有的引用傳遞的本質就是一場堆內存的調戲游戲。但是對于引用傳遞不當,那么也會造成垃圾的產生,那么本次將針對垃圾產生的原因進行簡單分析。
·范例:垃圾的產生
classPerson{
String name;
intage;
public voidtell(){
System.out.println("姓名:"+this.name+",年齡:"+this.age);
}
}
public classMain {
public static voidmain(String[] args) {
Person person1 = newPerson();//聲明對象Person person2 = newPerson();//聲明對象person1.name="張三";
person2.name="李四";
person1.age=18;
person2.age=25;
person1=person2;//引用傳遞}
}
此時已經明確發生了引用傳遞,并且也成功的完成了引用傳遞的處理操作,但是下面我們進行內存分析。
一個棧內存只能保存一個堆內存的地址數據,如果發生更改,則之前的地址數據將從此棧內存中徹底消失。
所謂的垃圾空間就是沒有任何棧內存所指向的堆內存空間,所有的垃圾空間將被GC(Garbage Collector、垃圾收集器)不定期進行回收,并且釋放無用空間,但是如果垃圾過多,一定將影響到GC的處理性能,從而降低整體的程序性能,那么在實際的開發之中垃圾的產生應該越少越好。
總結
以上是生活随笔為你收集整理的java类与对象_Java类与对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 清空jframe_java
- 下一篇: 美的BCD-435WKPZM(E)对开门