嘿,你對象在這兒——Java 面向對象編程:類和對象

2020-12-06 計算機java編程

相信很多小夥伴學Java的時候都是戰術開頭:HelloWorld! 首先,創建一個類,然後寫一個主方法,最後列印輸出,ojbk完事兒。等到我們學面向對象的時候不得不去了解一下什麼是類,什麼是對象,他倆是啥關係。

關於面向對象,網上那個寫得很好的例子已經被我抄到C語言與Java的區別那篇了,感興趣的小夥伴可以點左上角的菜單去查看。

那麼類和對象到底是什麼呢?類就是有某些共同特徵的實體的集合;對象就是類的實例,一個對象當然就是一個類的實例。來,上例子:有一句話叫物以類聚人以群分,咱們拿人來舉例,人類或者說人當然是一個類,因為你說人的時候它不是一個實體,也就是不知道說的是哪個人;但是說人的時候我們都知道特徵,有鼻子有眼的,能製造和使用工具。還記得初一英語的第一篇對話不,I'm Kangkang are you Michael?這裡的Kangkang和Michael是不是對象,當然是,Kangkang有鼻子有眼的吧。不能說人家不會製造和使用工具吧,簡單的也算,符合人這個類的特徵,又是一個實例,所以人家是一個對象,那Michael呢?當然也是一個對象。

類和對象的關係該亮出來了,類是對象的抽象,對象是類的實例。啥意思呢,首先我不知道小夥伴對於抽象的理解是不是和我以前一樣,具體的反義詞啊,很難描述的東西啊,其實這裡的抽象簡單來說就是抽出像的部分,你看Kangkang有鼻子有眼的,會走路、吃飯、睡覺……那Michael也是,你也是,我也是;每一個人都有的特點抽取出來歸為人類。那對象是類的實例就應該很好理解了,Kangkang這個對象是不是人的一個實例?當然是,你家的貓是不是貓的一個實例?毛茸茸的,還會喵喵叫,當然是,那別人家養的貓自然也是貓類的一個實例。

這裡再說一下對象的屬性和方法,然後咱們就上一段代碼,對象包含屬性和方法,屬性就是對象的一些特徵,比如:名字,性別,身高;方法可以理解為對象的某些行為,比如給吃飯,睡覺,學習。來上一段代碼:

不知道有沒有初學者想問為啥Kangkang在睡覺前面列印,結果中的Kangkang是直接在main方法中列印p1對象的name屬性得到的,而睡覺則是p1對象調用的前面的sleep方法,在執行調用的方法的時候列印的。

我們來給創建對象那一句拿出來看看

這個類只能創建一個對象嗎?當然不是,只要你想要多少new多少

study()方法的列印語句中我們加了一個屬性name p2調用時列印的是p2的name屬性 川普+學習,p1調用時列印的是p1的name屬性 Kangkang+學習

所以我們通過對象調用方法時,方法中的屬性就是當前對象的屬性。

相關焦點

  • Java面向對象之接口——interface
    對於同一種型號的主板上的多個USB插槽,他們有相同的數據交換方式,相同的實現細節;在面向對象的思想中,可認為他們都是同一個類的不同實例,也就是說插槽是USB規範的實例。如: Walkable.java以I開頭表示接口,如:IWalkable.java接口在編譯成功之後,和類一樣,也是.class的字節碼文件。
  • 圖說Java中的OOPs(面向對象編程系統)基本概念
    面向對象編程是一種編程概念,其核心思想是允許用戶創建所需要的對象,然後提供處理這些對象的方法,使用者通過操作對象而獲得運算數據。本文將以簡潔的方式對面向對象編程中的概念進行梳理。1.Class(類)你可以將類理解為對一組相似實體的統稱。類只是一個邏輯組件,並不是具體的物理實體。例如,你可以創建一個名為「Bird」的鳥類,則它可能包含烏鴉,喜鵲,麻雀,鸚鵡等對象。其屬性(數據)可以是這些鳥的顏色,體重或者身高。除此之外,你還可以為鳥類提供飛行,捕食,鳴叫等方法。2.
  • JAVA面向對象的多態是個什麼東西?
    面向對象的三大特徵:封裝、繼承、多態。在前面已經說了過了封裝和繼承。今天就來聊聊剩下的多態。多態,從字面內容來看,就是多種形態,多種狀態。在java的面向對象中可以從以下兩個方面來講。我們來舉個例子,父類是動物類,有一個叫的方法。然後定義兩個子類繼承自這個父類,一個貓類、一個狗類。他們分別對叫的方法做了重寫,貓類重寫叫的方法是發出「喵喵」聲,而狗類重寫叫的方法是發出「汪汪」聲。於是我們同樣創建的動物的對象,同樣調用這個動物對象叫的方法,如果這個動物對象是貓,則會發出「喵喵」聲,而如果這個動物對象是狗,發出的聲音則成了「汪汪」。
  • 如何給女朋友解釋什麼是面向對象編程?
    女朋友拿著一本《面向對象編程》過來找我。什麼是面向對象?是要面向我寫代碼嗎?不是啦,這個面向對象的對象不是你這個對象啦。此時,我突然感受到了一股莫名的殺氣。什麼?你還有其他對象嗎?有我好看嗎?有我瘦嗎?不對。你不能有其他對象。
  • 面向對象編程的災難:是時候考慮更新換代了!
    框架的抽象定義是:「一個基本的支持結構」——框架關注更抽象的東西,比如代碼組織和處理代碼複雜性。儘管面向對象編程和函數編程都是編程範例,但它們也是高級框架。限制我們的選擇c++是一種可怕的[面向對象]語言……將你的項目限制為C意味著人們不會用任何愚蠢的「對象模型」來把事情搞砸。
  • 跟我學java編程—面向對象編程多態概念的理解
    前面介紹了面向對象的繼承思想,繼承思想其核心是代碼的復用和程序功能高度的擴展性。繼承可以直接實現代碼的復用,功能的擴展性是指繼承後的類在父類的基礎上增加新的行為,或者對父類的行為進行擴展,實現同一個行為具有不同的實現代碼。
  • 面向對象編程
    面向對象編程(OOP)對於初學者來說可能是一個很難理解的概念。很多書籍都是從解釋OOP開始,討論三大術語:封裝、繼承和多態性,但是解釋的效果往往讓人失望。本文希望讓程式設計師、數據科學家和python愛好者們更容易理解這個概念。我們去掉所有的行話,通過一些例子來做解說。這篇文章是關於解釋OOP的外行方式。
  • 跟我學java編程—理解Java語言的抽象與對象
    面向對象編程思想的一個基本方法就是抽象。抽象是從眾多的同類事物中抽取出具有共同特徵的過程及方法。例如:生梨、桃子也具備蘋果、香蕉、葡萄的共同特點,因此生梨和桃子也可以歸類為水果。如果以面向對象的編程思想來看前面例子的話,水果可以稱之為類,而蘋果、香蕉、葡萄可以稱之為類的實例或對象。
  • Java面向對象之:封裝、繼承、多態
    Java面向對象之:封裝、繼承、多態高內聚和低耦合;繼承從面向對象的角度上說,繼承是一種從一般到特殊的關係,是一種「is a」的關係,即子類是對父類的拓展,是一種特殊的父類,比如:狗是動物的一種特殊情況,狗屬於動物;在這個例子中,動物是父類,狗是子類,狗繼承了動物的特徵和行為,並在動物的特徵和行為的基礎之上拓展自己的特徵和行為,構成了狗這種特殊的動物
  • java第五章 類和對象(核心)
    Student();//給成員變量賦值s.name = "林青霞";s.setAge(30);//調用show方法s.show();}}4.2 private的使用【應用】需求:定義標準的學生類,要求name和age使用private修飾,並提供set和get方法以及便於顯示數據的
  • 跟我學java編程—深入理解面向對象的繼承思想
    繼承是面向對象設計的重要思想,其核心是代碼的復用和程序功能高度的擴展性。繼承在詞典中的解釋是把前人的知識、文化、思想、財產、知識等接受過來。在面向對象中,繼承是對類而言的,新類可以繼承已有類的屬性和方法,這樣做的好處是新類可以復用原有類所有的代碼,復用的同時又可以定義新的方法和屬性來擴展原有類的功能。為了理解繼承思想,下面看一個案例。某出版機構準備要通過微信小程序實現產品在微信媒體的推廣和銷售,出版機構的產品包括圖書、音頻、視頻,圖書又分為紙書和電子書。
  • Java面向對象之final、abstract抽象、和變量生命周期
    Java面向對象之final、abstract抽象、final修飾符final是最終、不可修改的意思, 在Java中它可以修飾非抽象類,非抽象方法和變量。java裡final修飾的類有很多,比如八大基本數據類型的包裝類(Byte,Character、Short、Integer、Long、Float、Double、Boolean)和String等。
  • 在.NET中,C#舉例深度理解面向對象編程中的封裝、繼承和多態
    -面向對象編程1.什麼是面向對象編程?我們在沒有接觸類之前,所有的代碼都是堆在一起的,沒有面向對象的概念,但接觸了類/對象/繼承/接口之後,我們要建立自己的面向對象編程的概念,在編碼過程中,要讓自己編寫的程序是面向對象的,而不是堆代碼。微軟在.NET框架中推出的C#語言是面向對象的強類型程式語言。
  • Unity遊戲開發:C Sharp進階之面向對象編程
    C進階之面向對象編程深入淺出的C#進階課程在了解C#基礎語法之上,進一步學習面向對象(OOP)編程技術和.NET框架,並深入講解在實踐中總結出的OOP設計理念。學完本課程,即可設計出優質的面向對象程序,並可在Unity中用C#來開發所有腳本。
  • 「JAVA」萬字長篇詳述字節碼對象與反射機制完成動態編程
    ;比如Teacher.java,Student.java等,而Class類用來描述我們所定義的業務邏輯的類,也就是描述類的類。Class類的實例:其實就是JVM中的字節碼對象,一個字節碼文件有一個字節碼對象,一個Class實例表示在JVM中的某個類或者接口,當然,也包括枚舉和註解,因為枚舉是一種特殊的類,註解是一種特殊的接口。每一個類都有都有一個Class對象,也就是說每個類都有一個字節碼對象,有一個字節碼文件。
  • Java基礎——面向對象和構造器
    所以要用實例成員進行存儲,new10個學生的對象,寄存在每個對象上,那麼就有10個對象。靜態成員存儲的話只可以存一份,如果多個對象的話就會覆蓋第一份的信息,所以靜態成員只能有一份信息。靜態成員:類只能被加載一次,靜態成員只可能有一份。
  • 面向對象六大原則
    這篇文章主要講的是面向對象設計中,應該遵循的六大原則。只有掌握了這些原則,才能更好的理解設計模式。 我們接下來要介紹以下6個內容。而細節就是實現類,也就是實現了接口或者繼承了抽象類的類。他是可以被實例化的。高層模塊指的是調用端,底層模塊是具體的實現類。在Java中,依賴倒置原則是指模塊間的依賴是通過抽象來發生的,實現類之間不發生直接的依賴關係,其依賴關係是通過接口是來實現的。這就是俗稱的面向接口編程。 下面有一個例子來講述這個問題。這個例子是工人用錘子來修理東西。
  • 為什麼Java字符串是不可變對象?(3)
    為什麼Java字符串是不可變對象?(3) 本文主要來介紹一下Java中的不可變對象,以及Java中String類的不可變性,那麼為什麼Java的String類是不可變對象?讓我們一起來分析一下。
  • 詳解Java面向對象開發方法,看清華大牛帶你深入淺出剖析
    前言目前在軟體開發領域有兩種主流的開發方法:結構化開發和面向對象開發。結構化開發是一種比較傳統的開發方法,早期的高級程式語言,如Basic、C. Fortran和Pascal等,都是支持結構化開發的程式語言。
  • JSON對象和簡單練習
    JSON對象和簡單練習前面一篇我們查找的圖書的name都是通過逗號隔開,然後拼接成一個字符串傳給瀏覽器。其實我們可以把多個圖書名稱用數組格式傳給瀏覽器,前端JS代碼通過遍歷這個數組,也是可以拿到這些name數據。現在,我們一般不用數組,而是用JSON這格式。