iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0
自我挑戰組

30天Java由淺入深系列 第 17

Day 17 : 物件與類別關係

  • 分享至 

  • xImage
  •  

前言

本章延續前面繼續介紹物件導向的概念,其中有3大特性 : 繼承、封裝、多型

  1. 繼承(Inheritance) : 一類別繼承另一類別之屬性、函數、變數等(單向繼承)
  • 一個subclass對一個superclass ; 一個superclass可被多個subclass繼承
  1. 封裝(Encapsulation) : 類別控制物件或其他被其餘類別存取的部分。

  2. 多形(Polymorphism) : 運用函數去實行多個條件任務。

不過在這之前,我們會介紹物件與類別的更多關係,透過基礎的建立,如:建構子、抽象、介面等,我們之後面對更複雜的物件導向概念也更好上手。


物件呼叫函數

如同前面所介紹,當我們創立了一個新物件,其會繼承類別中的所有屬性,包含函數 :

public class Newgpa{
	public void report(char gpa){
		System.out.println("Your gpa is : " + gpa);
	}
	
	public double grade(char gpa){
		if(gpa == 'A') return 3.7;
		else return 2.7; 
	}
	
	public static void main(String[] args){
		Newgpa gpa_check = new Newgpa();
		gpa_check.report('A');
		System.out.println("Your Final grade is : "+ gpa_check.grade('A'));
	}
}
  • 程式解析 : 這支程式傳入gpa第等制,印出及回傳其分數。創立一個新物件叫gpa_check,其繼承了原類別的兩個函數。

Static vs. Public

回到我們在Day 11: 函數提到的函數前置修飾字的比較,這邊運用程式demo來呈現差異 :

public class Main{
	public void modifier_is_public(){
		System.out.println("Called by object");
	}
	
	static void modifier_is_static(){
		System.out.println("Called without creating objects");
	}

	public static void main(String[] args){
		/*'創造物件呼叫函數*/
		Main public_obj = new Main();
		public_obj.modifier_is_public();         //Called by object

		/*直接呼叫函數*/
		modifier_is_static();     //Called without creating objects
	}
}
  • 程式解析 : 簡單觀察可以發現當Modifier為public時,必須創立一個物件後才有辦法呼叫 ; 反之則可以直接呼叫。往後設定一個函數要引用時必須特別注意!!!

以上內容若有錯誤煩請不吝嗇指教,今天身體欠佳,內容稍作刪減,還請不要介意。/images/emoticon/emoticon06.gif


上一篇
Day 16 : 物件基礎概念
下一篇
Day 18 : 建構子
系列文
30天Java由淺入深30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言