什么是類和對象
- 對象:具體的數(shù)據(jù)信息
- 類:類是模子,確定對象將會擁有的特征(屬性)和行為(方法)
- 類是對象的類型
- 具有相同屬性和方法的一組對象的集合
- 屬性:對象的各種特征
- 方法:對象執(zhí)行的操作,能干什么
- 類是抽象的概念,僅僅是模板谬擦。
- 對象是一個能看得到切距,摸得首的具體實(shí)體
如何定義java中的類
- 類的重要性:所有java程序都 以類class為組織單元
- 什么是類
類是模子,確定對象將會擁有的特征(屬性)和行為(方法) - 類的組成
屬性和方法 - 定義一個類的步驟
- 定義類名
public class 類名{ 屬性 - 編寫類的屬性
定義屬性1的類型 屬性1; - 編寫類的方法
定義方法1
}
package com.imooc
public class Telephone{
//屬性(成員變量)是什么
float screen;
float cpu;
float mem;
//方法 干什么
void call(){
System.out.println("Telephone有打電話的功能");
}
void sendMessage(){
System.out.println("Telephone有發(fā)短信的功能");
}
}
如何使用java對象
- 創(chuàng)建對象
類名 對象名 = new 類名();
Telephone phone = new Telephone(); - 使用對象
引用對象的屬性:對象名.屬性
phone.screen = 5;//給screen屬性賦值5
引用對象的方法:對象名.方法名()
phone.sendMessage();//調(diào)用sendMessage方法
成員變量和局部變量
- 成員變量
在類中定義惨远,用來描述對象將要有什么 - 局部變量
在類的方法中定義谜悟,在方法中臨時保存數(shù)據(jù)
區(qū)別
- 作用域不同
- 局部變量限于定義它的方法內(nèi)部
- 成員變量在整個類內(nèi)部都可見
初始值不同:會給成員變量一個初始值,不會給局部變量賦予初始值
在同一個方法中锨络,不允許同名局部變量
在不同的方法中赌躺,允許有同名的局部變量兩類變量同名時,局部變量具有更高優(yōu)先級
方法的構(gòu)造
- 使用new+構(gòu)造方法羡儿,創(chuàng)建一個新的對象
- 構(gòu)造構(gòu)造方法是定義在JAVA類中的一個用來初始化對象的方法構(gòu)造方法與類同名且沒有返回值
public 構(gòu)造方法以名(){
//初媽化代碼
}
- 無參的構(gòu)造方法
main():
Telphone phone = new Telphone();
class Telphone:
public Telphone(){
System.out.println("Telphone構(gòu)造方法執(zhí)行了");
}
- 有參構(gòu)造方法
main():
Telphone phone2 = new Telphone(4.0f, 2.0f, 2.0f);
class Telphone:
public Telphone(float newScreen, float newCpu, float newMem){
screen = newScreen;
cpu = newCpu;
mem = newMem;
}
- 當(dāng)沒有指定構(gòu)造方法時礼患,系統(tǒng)會自動添加無參的構(gòu)造方法
- 當(dāng)有指定的構(gòu)造方法時,無論是有參掠归、無參的構(gòu)造方法缅叠,都不會自動添加無參的構(gòu)造方法
- 構(gòu)造方法的重載:方法名相同,但參數(shù) 不同的多個方法虏冻,調(diào)用時會自動根據(jù)不同的參數(shù)選擇相應(yīng)的方法
- 構(gòu)造方法不但可以給對象的屬性賦值肤粱,還可以保證給對象的屬性賦一個合理的值
Java中的static使用之靜態(tài)變量
Java 中被 static 修飾的成員稱為靜態(tài)成員或類成員。它屬于整個類所有厨相,而不是某個對象所有领曼,即被類的所有對象所共享。靜態(tài)成員可以使用類名直接訪問蛮穿,也可以使用對象名進(jìn)行訪問庶骄。當(dāng)然,鑒于他作用的特殊性更推薦用類名訪問~~
public class HelloWorld{
//static修飾變量為靜態(tài)變量践磅,所有類的對象共享hobby
static String hobby = "imooc";
public statc void main(String[] args){
//靜態(tài)變量可以直接使用類名來訪問单刁,無需創(chuàng)建類的對象
//HelloWorld hobby = new HellowWorld();
System.out.println("通過類名訪問hobby:"+ HelloWorld.hobby);
//創(chuàng)建類的對象
HelloWorld hello = new HelloWorld();
//使用用對象名來訪問靜態(tài)變量
System.out.println("通過對象名訪問hobby:"+ hello.hooby);
//使用對象名的形式修改靜態(tài)變量的值
hello.hobby = “愛莫課”;
//再次使用類名訪問靜態(tài)變量,值已修改
System.out.println("通過類名訪問hobby:"+HelloWorld.hobby);
}
}
Java中的static使用之靜態(tài)方法
與靜態(tài)變量一樣府适,我們也可以使用 static 修飾方法羔飞,稱為靜態(tài)方法或類方法。其實(shí)之前我們一直寫的 main 方法就是靜態(tài)方法檐春。靜態(tài)方法的使用如:
public class HelloWorld
{
//使用static關(guān)鍵字聲明靜態(tài)方法
public static void print()
{
System.out.println(“歡迎您逻淌,愛幕課");
}
public static void main(String[] args)
{
//直接使用類名調(diào)用確靜態(tài)方法
HelloWorld.pirnt();
//也可以通過對象名調(diào)用,當(dāng)然更推薦使用類名調(diào)用的方式
HelloWorld demo = new HelloWorld();
demo.pring();
}
}
注意:
- 靜態(tài)方法中可以直接調(diào)用同類中的靜態(tài)成員 疟暖,但不能直接調(diào)用非靜態(tài)成員恍风。
//pulic class HelloWorld
{
String name = "aimue";//非靜態(tài)變量
static String hobby = "imooc";//靜態(tài)變量
//靜態(tài)方法調(diào)用非靜態(tài)變量
public static void print();
{
System.out.println(name);//不能直接調(diào)用非靜態(tài)變量
System.out.println(hobby);//可以直接調(diào)用靜態(tài)變量
}
}
如果希望在靜態(tài)方法中調(diào)用非靜態(tài)變量,可以通過偶創(chuàng)建類的對象,然后能過對象訪問非靜態(tài)變量朋贬。
//在靜態(tài)方法中調(diào)用非靜態(tài)變量
public static void print()
{
//創(chuàng)建類的對象
HelloWorld hello = new HelloWorld();
//通過對象來實(shí)現(xiàn)在靜態(tài)方法中調(diào)用非靜態(tài)變量
System.outpringln(hello.name);
System.out.println(hobby);
}
- 在普通成員 方法中凯楔,則可以直接訪問同類的非靜態(tài)變量和靜態(tài)變量。
String name = "aimuke";
static String hobby = "imooc";
//普通成員 方法可以直接訪問非靜態(tài)變量和靜態(tài)變量
public void show()
{
System.out.println(name);
System.out.println(hobby);
}
- 靜態(tài)方法中不能直接調(diào)用非靜態(tài)方法锦募,需要通過對象來訪問非靜態(tài)方法
public void show()
{
System.out.prinln("Welcom to imooc");
}
//靜態(tài)方法
public static void print()
{
System.out.println("歡迎你");
}
public static void main(String[] args)
[
//普通成員方法必須通過對象來調(diào)用
HelloWorld hello = new HelloWorld();
hello.show();
//可以直接調(diào)用靜態(tài)方法
print();
]
Java 中的 static 使用之靜態(tài)初始化塊
java中可心通過初始化塊進(jìn)行數(shù)據(jù)賦值摆屯。
public calss HelloWorld{
String name;//定義一個成員變量
//通過 初始化塊賦值
name = "imooc";
}
在類的聲明中,可以包含多個初始化塊糠亩,當(dāng)創(chuàng)建類的實(shí)例時虐骑,就會依次執(zhí)行這些代碼塊。如果使用static 修飾初始化塊赎线,就稱為靜態(tài)初始化塊廷没。
需要特別注意:靜態(tài)初始化塊只在類加載時執(zhí)行,且只會執(zhí)行一次垂寥,同時靜態(tài)初始化塊只能給靜態(tài)變量賦值颠黎,不能初始化普通的成員變量。
public class HelloWorld
{
int num1;// 聲明變量num1
int num2;//聲明變量num2
static int num3;//
public HelloWorld()
{
//構(gòu)造方法
num1 = 91;
System.out.println("通過構(gòu)造方法為變量num1賦值");
}
{
//初始化塊
num2 = 74;
System.out.println("通過初始化塊給變量num2賦值");
}
Static{
靜態(tài)初始化塊
num3 = 83;
System.out.println("通過 靜態(tài)初始化塊為變量賦值");
}
public static void main(String[] args)
{
HelloWorld hello = new HelloWorld();//創(chuàng)建類的對象hello
System.out.println("num1"+hello.num1);
System.out.println("num1"+hello.num2);
System.out.println("num1"+num1);
HelloWorld hello2 = new HelloWorld();//再創(chuàng)建對象hello2
}
}
執(zhí)行順序:靜態(tài)初始化志初始化滞项,初始化塊初始化狭归,構(gòu)造方法初始化
程序運(yùn)行時靜態(tài)初始化塊最先被執(zhí)行,然后執(zhí)行普通初始化塊文判,最后才執(zhí)行構(gòu)造方法过椎。由于靜態(tài)初始化塊只在類加載時執(zhí)行一次,所以當(dāng)再次創(chuàng)建對象 hello2 時并未執(zhí)行靜態(tài)初始化塊戏仓。
UML
1.UML概念
Unified Modeling Language
又稱統(tǒng)一建模語言或標(biāo)準(zhǔn)建模語言
是一個支持模型化和軟件系統(tǒng)開發(fā)的圖形語言
為軟件開發(fā)的所有階段提供支持
2.UML圖示
UML2.2中一共定義了14種圖示diagrams
3.常用UML圖
- 用例圖The Use Case Diagram
用例圖能夠以可視化的方式疚宇,表達(dá)系統(tǒng)如何滿足所收集的業(yè)務(wù)規(guī)則,以及特定的用戶需求等信息
- 序列圖The Sequence Diagram
序列圖用于按照交互發(fā)生的一系列順序赏殃,顯示對象之間的這些交互
-UML類圖
UML類圖敷待,業(yè)務(wù)邏輯和所有支持結(jié)構(gòu)一同被用于定義全部的代碼結(jié)構(gòu)
4.UML建模工具
visio(Microsoft)、Rational(IBM)嗓奢、PowerDesign