iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
自我挑戰組

JAVA簡易教學+CPE歷屆試題講解系列 第 19

[iT鐵人賽Day19]JAVA的類別

  • 分享至 

  • xImage
  •  

今天是有關JAVA最後一天的分享了,後天要開始分享CPE的歷屆試題
然後明天我打算寫一篇JAVA的習後心得,所以不算在JAVA的分享裡面
進入正題,今天要來說到的是JAVA的類別,類別這個部分比較進階
所以我會比較簡單的帶過
關於CPE的部分,閱讀前面幾天的文章,應該就可以應付的了
一般來說,類別是由「資料成員」以及「函數成員」封裝而成
甚麼是「資料成員」?甚麼是「函數成員」?
以矩形作為範例,矩形的長跟寬就是「資料成員」,矩形的面積跟周長就是「函數成員」
一個簡單的範例,程式碼如下:

import java.util.*;
import static java.lang.System.*;
	class CRectangle{
		int width;
		int height;
		int area()
		{
			return width*height;
		}
		int perimter()
		{
			return 2*(width+height);
		}
	}
	public class app6_1
	{
		public static void main(String[] args) {
		CRectangle rect1;
		rect1 = new CRectangle();
		
		Scanner scn=new Scanner(System.in);
		System.out.print("請輸入長 : ");
		rect1.width = scn.nextInt();
		System.out.print("請輸入寬 : ");
		rect1.height = scn.nextInt();
		
		System.out.println("面積 = " + rect1.area());
		System.out.println("周長 = " + rect1.perimter());
		}
	}

執行結果如下:
https://ithelp.ithome.com.tw/upload/images/20210919/20140567IMOBtHcaxR.png
class就是建立類別,int width就是定義資料成員,int area()就是定義函數成員,然後在app6_1引用
我們把類別CRectangle撰寫類別app6_1前面
事實上,我們不必在意其先後順序,把兩個類別的順序相反過來,編譯器也可以接受

再來介紹類別的公有成員與私有成員
我們的範例程式的資料會員可以從類別外部進行更改
雖然說對程式設計者來說相當方便,但是在某個層面卻隱藏著潛在的危險
如果沒有一個機制來限定類別的存取,就很可能造成輸入錯誤
所以JAVA提供了私有成員的設定
簡單的私有成員範例程式碼如下:

import java.util.*;
import static java.lang.System.*;
	class CRectangle{
		private double width;
		private double height;
		void show_area()
		{
			System.out.println("面積 = " + width*height);
		}
	}
	public class app6_2
	{
		public static void main(String[] args) {
		CRectangle cir1 = new CRectangle();
		cir1.width = 2;
		cir1.height = 5;
		cir1.show_area();
		}
	}

private就是把資料成員設為私有成員
width * height在CRectangle類別內部儲存,所以可以儲存
到後面在CRectangle類別的外部了
所以cir1.width = 2;cir1.height = 5;無法更改
執行結果如下:
https://ithelp.ithome.com.tw/upload/images/20210919/20140567dZxrYGZ5Ca.png
這個錯誤訊息明確的指出私有成員無法從外部來存取

關於JAVA的類別就講到這了
可能今天的文章會比較長,因為還要做習後心得,所以類別就不分上下兩篇了。


上一篇
[iT鐵人賽Day18]JAVA的函數(下篇)
下一篇
[iT鐵人賽Day20]JAVA學習心得
系列文
JAVA簡易教學+CPE歷屆試題講解30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言