類的基本概念
- 類是現實世界抽象爲數據集合的一種表達工具,在程序中我們把類作爲數據、及數據操作的容器,是一種自定義數據類型。
- 類具有類型本身的屬性,也具有實例屬性。類變量和實例變量都叫成員變量
,類變量也叫靜態成員變量(static修飾符標誌);類方法和實例方法都叫成員方法,類方法也叫靜態方法(static修飾符標誌)。實例也是實際的例子,類似“int a”咱們就叫做變量a是類型int的實例化。
- 關於public class,這個public是爲了方便能被外部的包導入引用。
實例變量/實例方法
- 定一個類本身和定義一個函數類類似,類本身不會自動做什麼事情,不會分配內存,也不會執行代碼。方法要執行,需要被實例方法調用,首頁需要初始化一個實例,這裏的實例也就是對象。
- 實例化一個對象後,系統會給這個實例化變量開闢兩個內存空間:一個存放實際內容,一個存放實際內容的地址。如下聲明後賦值,聲明時會給變量確定一個存放地址的內存空間,該地址指向存儲內容的首地址。因爲這種變量本身不存儲數據內容,只存儲內容位置,我們也稱爲引用數據類型(上一節我們講過)。
Point p = new Poiont();
- 如果在方法內部調用同一個類的另一個方法,就不必使用this。同樣,在一個方法中如果沒有局部變量和成員變量同名,那麼在這個方法中使用成員變量也不必使用this。靜態成員也無法使用this(因爲沒有實例化)。
- 實例化後,如果沒有給實例變量賦值,系統會自動給系統變量賦於該類型缺省值作爲初始默認值(上一節基本類型提到過)。
類的構造方法
- 類型與構造函數名相同,沒有返回值,也不能有返回值,構造函數返回值就是實例本身!
- 一個類可以有多個構造方法,構造方法可以重載。一旦定義了構造方法,Java就不會再自動生成默認的構造方法了。
- 構造方法可以私有(private),可以用在無法實例化的類,例如:Math等工具類不需要實例化;還有一種場景是隻能通過類靜態方法創建類的實例,因爲構造方法無法暴露在類外部,所以只能被靜態類方法調用,如:單例模式只能創建一個實例。
- 子類會默認繼承父類的非私有成員變量和非私有成員方法,也包括構造方法(無參構造函數)。如果子類沒有顯示調用父類構造器,則自動調用父類的無參構造器;此時如果父類沒有默認構造器,則編譯器會報錯。
- 實例化後,如果沒有給實例變量賦值,系統會自動給系統變量賦於該類型缺省值作爲初始默認值(上一節基本類型提到過)。
最後上一個 Java畫圖的代碼
主函數如下:
import javax.swing.JFrame;
import paint.MyCanvas;
public class HelloWorld {
JFrame jFrame;
public static void main(String[] args) {
// TODO 自動生成的方法存根
HelloWorld paintMain=new HelloWorld();
paintMain.initView();
}public void initView() { jFrame =new JFrame(); jFrame.setBounds(100, 100, 500, 500); jFrame.setTitle("畫圖測試"); jFrame.setLayout(null); MyCanvas myCanvas=new MyCanvas();//畫布 myCanvas.setBounds(0,0, 500, 500); jFrame.add(myCanvas); jFrame.setVisible(true); }
}
MyCanvas類如下:
package paint;
import java.awt.Canvas;
import java.awt.Graphics;public class MyCanvas extends Canvas{
@ Override
public void paint(Graphics g) {
// TODO 自動生成的方法存根
super.paint(g);//直接輸入paint提示出來函數;
char[] a= {'顯','示','文','字'};
g.drawChars(a, 0, 4, 50, 150);// data數組,offset爲數據初始偏移量,length爲要繪製的字符數,x,y文本基線的xy座標,
g.drawString("字符測試01", 20, 20);// 注意,字符串型的x,y在字符中,而不是左上頂點;}
}
畫圖函數參考
畫線段:drawLine
public abstract void drawLine(int x1,int y1,int x2,int y2)
在此圖形上下文的座標系中,使用當前顏色在點 (x1, y1) 和 (x2, y2) 之間畫一條線
參數:
x1 - 第一個點的 x 座標。
y1 - 第一個點的 y 座標。
x2 - 第二個點的 x 座標。
y2 - 第二個點的 y 座標。
畫矩形:drawRect
public void drawRect(int x,int y, int width, int height)
繪製指定矩形的邊框。矩形的左邊緣和右邊緣分別位於 x 和 x + width。上邊緣和下邊緣分別位於 y 和 y + height。使用圖形上下文的當前顏色繪製該矩形。
參數:
x - 要繪製矩形的 x 座標。
y - 要繪製矩形的 y 座標。
width - 要繪製矩形的寬度。
height - 要繪製矩形的高度。
畫橢圓形:drawOval
public abstract void drawOval(int x, int y,int width, int height)
繪製橢圓的邊框。得到一個圓或橢圓,它剛好能放入由 x、y、width 和 height 參數指定的矩形中。
橢圓覆蓋區域的寬度爲 width + 1 像素,高度爲 height + 1 像素。
參數:
x - 要繪製橢圓的左上角的 x 座標。
y - 要繪製橢圓的左上角的 y 座標。
width - 要繪製橢圓的寬度。
height - 要繪製橢圓的高度。
畫帶顏色的圖形:setColor
public abstract void setColor(Color c)
將此圖形上下文的當前顏色設置爲指定顏色。使用此圖形上下文的所有後續圖形操作均使用這個指定的顏色。
參數:
c - 新的呈現顏色。
畫圓:drawRoundRect
public abstract void drawRoundRect(int x, int y,int width,int height,int arcWidth,int arcHeight)
用此圖形上下文的當前顏色繪製圓角矩形的邊框。矩形的左邊緣和右邊緣分別位於 x 和 x + width。矩形的上邊緣和下邊緣分別位於 y 和 y + height。
參數:
x - 要繪製矩形的 x 座標。
y - 要繪製矩形的 y 座標。
width - 要繪製矩形的寬度。
height - 要繪製矩形的高度。
arcWidth - 4 個角弧度的水平直徑。
arcHeight - 4 個角弧度的垂直直徑。
填充橢圓:fillOval
看看它的參數:
fillOval(int x,int y ,int width ,int height)
前兩個X 和 Y是矩形框的左上角的座標,width和height是寬和高。
畫多邊形
int px[] = { 210, 220, 270, 250, 240 }; int py[] = { 220, 250, 300, 270, 220 }; g.drawPolygon(px, py, px.length);
顯示文字
g.drawString(String str, int x,int y);