總網頁瀏覽量

2013年2月27日 星期三

多型plymorphism

簡單來說:在繼承關係之下,透過父類別的類別變數執行子類別的method。

定義:在執行程式,物件能夠依照不同情況變換資料型態。換句話說,多型是指一個類別參考可以在不同環境下,扮演不同角色的特性,指向不同的物件實體,可透過實作多個繼承或介面來實現父類別,並使用Override或Overload來達成。

物件在執行時會依據指向的物件實體類型來呼叫對應方法。前提:子類別必須改寫(override)父類別的方法。
JVM在執行階段可以確認每個物件的實際類型,並呼叫對應方法。
使用多型是為了避免轉型。

作法:
用父類別宣告一個類別變數
這個類別變數用子類別來(new)建立物件


結論,構成多型的三要素,缺一不可:
1.類別要有繼承
2.類別要改寫父類別的方法
3.父類別調用指向子類別的物件


對於java來說,應該呼叫哪一個方法來執行,與變數本身所屬類別無關,而是跟物件本身所屬類別有關。


2013年2月26日 星期二

super用法

super:執行程式時一個物件,指向該物件的父類別。

一、子類別在建構子中初始化時用super();呼叫父類別建構子初始化

例如:
class Human{
public Human(){
System.out.println("Hahaha");
}

public void say(){
    System.out.println("Catch a murderer");
}

}

class Detective extends Human{//繼承Human
public Detective(){
super();
/*
super指向Human物件,在這裡用super呼叫Human建構子。
這邊不寫super,系統會默默地在第一行自動補上super。所以在建立subclass物件時會呼叫superclass建構子做初始化。super必須寫在建構子的第一行,如果不寫在第一行,那麼編譯階段,物件初始化時系統會自動在建構子第一行補上super()做初始化,之後又碰上開發者自己加入的super()又一次初始化就會產生error。
*/
}

@override
public void say(){
System.out.println("Yout are the murderer");

}

public void catchmurderer(){
    super.say();
}

   
}

public class mypractice {
    public static void main(String[] args) {
    Detective conan = new Detective();  
    conan.catchmurderder();
    }
}



子類別建立物件會先呼叫父類別的建構子初始化
由上面例子Detective建立conan物件時會呼叫Human類別的建構子做初始。
其實這樣設計也符合邏輯
子類別繼承自父類別的成員函數與成員變數
兒子擁有老爸一些特徵,這些特徵在老爸出生時就決定了。
兒子出生時老爸的特徵一定先出現。


在java世界裡所有的類別都是繼承自Object這個類別
因此所有的類別宣告建構子時候,系統都會默默地補上super();
去呼叫Object的建構子做初始化。

本篇例子:Detective建立物件時會(Detictive→Human→Object)層層遞迴呼叫父類別建構子做初始化。先在Object建構子初始化,接著在Human建構子初始化,最後是在Detective初始化。



二、子類別改寫(override)父類別的method或variable後,要使用父類別的method或variable時,就用super.method();呼叫父類別的method




2013年2月24日 星期日

在inhon g1手機跑自己開發的程式

作業系統:win7
本篇是設定在Inhon g1手機跑自己用eclipse的程式
首先準備好自己打的程式

一、設定手機
1.系統設定→開發人員選項→將USB偵錯打勾
2.將手機插上電腦

二、設定電腦
1.去android sdk manage安裝use driver
2.下載inhon gi驅動程式 MT65XX好像是聯發科設計的??
MT65xx android phone
(去網路找吧)
3.去裝置管理員安裝驅動程式(youtube 有安裝驅動程式影片教學)
4.想要跑的project點下右鍵→Run as →Run configuration
→左邊選單點下android application→右邊的target頁面選lunch on all compatible devices→在android頁面打上project名稱
5.試著run看看




PS:
檢查電腦有沒有偵測到手機
打開命令提示字元,去sdk目錄底下的platform-tool
打上adb devices
如果螢幕上有出現裝置編號(型號)那麼就安裝成功

也可以打開eclipse:
然後上面一排工具選項點選window→show view→other→新增devices
,畫面下方有devices的資訊,若有手機型號那麼就安裝成功了



linux安裝法:

一、設定手機
1.系統設定→開發人員選項→將USB偵錯打勾
2.將手機插上電腦

二、
在終端機切換到sdk的platfom-tool之下
sudo ./adb kill-server
sudo ./adb start-server
記得要以root權限操作

如此以來在linux安裝就完成

android 更新sdk之後出現please update ADT to the latest version的解決方法

修改sdk\tools\lib\plugin.pro

將版本編號改成更新前的版本編號



2013年2月22日 星期五

ASP連結資料庫

資料哭與ASP.net連線
新增一個資料集,拉TableAdapter(表格配接器)。
1.
TableAdapter:連線到資料庫,針對開發系統需求撈出資料產生資料集。
2.
更改TableAdapter的屬性Name,可以用他的Name在C#作類別變數宣告
3.
我們在C#裡面,用程式將資料顯示在gridview上。
主要架構


在C#程式碼中。
 DrinkDataSet ds;//宣告在page_load之外
在page_load中
  ds = new DrinkDataSet();//建立物件並初始化
  DrinkDataSetTableAdapters.DrinkTableAdapter drink_da = new DrinkDataSetTableAdapters.DrinkTableAdapter();//宣告資料表單配接器,
        drink_da.Fill(ds.Drink);//將資料配接器倒入資料集
        GridView1.DataSource = ds.Drink;//DataSource是物件,指定GridView資料獲取的對象
        GridView1.DataBind();//資料綁定,將table輸出在gridview

//上面兩行相當於GridView1.DataSourceID="NorthwindSqlDataSource"
    }

設定分頁:
1.將gridview的屬性allow paging設定成true
2.這時按下分頁會發生"找不到PageIndexChanging事件"錯誤訊息。(我想是因為按下分頁索引觸發PageIndexChanging事件,而C#找不到相對應的method)因此要在事件表單單的PageIndexChanging點兩下,C#出現PageIndexChanging的method。
3.雖然已經藤上去PageIndexChangeing的method,
但是點下分頁索引時gridview仍不會跳頁,因為我們沒告訴gridview該跳頁了,他頁數索引一直停留在第一頁。
因此
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    { 
        GridView1.PageIndex = e.NewPageIndex;
//更新GridView的PageIndex(頁數),將換頁事件的頁數給gridview的頁數。      
GridView1.DataBind();//資料綁定,其實不綁定好像也可以秀出頁面,目前好像沒有bug
   
//e是換頁事件,是一個物件,將他轉成字串印出來是System.Web.UI.WebControls.GridViewPageEventArgs
      
    }



由 GridView 'GridView1' 引發但尚未處理的事件 RowCancelingEdit。

2013年2月19日 星期二

Eclipse快捷鍵技巧與密技

"Alt"+"/"
自動補齊函式名稱功能,如果沒有自動補齊那就非常可能前面程式某個地方寫錯或漏寫。

"Ctrl"+"Shift"+"o"
自動import類別功能。

加入程式碼行號
在程式編輯視窗左邊灰色邊框按下滑鼠右鍵→show line numbers


設定多個中斷點執行程式時
按F8可以一步步執行中斷點下方的程式碼

ctrl+/
多行註解

ctrl+h
搜尋


執行插入引數 或給指令
run configuration→arguments
program arguments:是給main method引數
VM arguments:是給JVM的指令 例如:設定系統屬性、classpath