## 類與對象
對象是存在的具體實體,具有明確定義的特征和行為。萬物皆為對象,對象因我關注而產生。在軟件系統中,我們用類來模擬現實生活中的實體。**類是對象的抽象,對象是類的實例。**
## 課程代碼
~~~java
package com.demo2;
/**
* 學生類
* @author 一教室
*
*/
public class Student {
// 成員變量(有時候也可以看做為全局變量) ——(靜態的)屬性
//[修飾符] 數據類型 成員變量名 [= 默認值]; //在語法格式里,中括號有時表示中括號中的內容可有可無
//姓名
public String name;
//性別
public String sex;
//年齡
public int age;
//身高
public double height = 175.0;//默認值
//體重
public double weight = 70.5;
//學號
public String code;
//地址
private String address;
//近視
private boolean myopia;
//學生證
public static String stuIdCard = "qw124";//它此時已經不是成員變量了,而是類變量或靜態變量。
//方法 ——(動態的)行為
/*[修飾符] 返回值 方法名([參數列表]) {
方法體語句;
[返回值]
}*/
//如果在方法內部使用return,明確的返回某一項數據,在方法定義的時候就需要將方法定義中的返回值設為該數據的類型。
//如果沒有,則使用void關鍵字,表示該方法沒有返回值
/**
* 聽課
* @param className
* @param teacherName
*/
public String visitClass(String className, String teacherName) {//形參列表,這個參數指的是形式參數
int a = 5;//局部變量:在大括號(不是類的大括號)內部定義的變量,叫做局部變量,它的作用范圍只局限于這個大括號內
return this.name + "正在上" + teacherName + "的" + className + "課";//該處的this指的正在調用該方法的對象
}
/**
* 回答問題
* @param question
* @return
*/
public String answerQuestion(String question) {
String answer = question + "的回答是:xxxyyy";
return answer;
}
/**
* 打印聽課方法
* @param className
* @param teacherName
*/
public void printVisitClass(String className, String teacherName) {
System.out.println(this.visitClass(className,teacherName));
}
/**
* 吃飯
* 在靜態的方法中無法引用非靜態的內容
* @param count
* @return
*/
public static String eatFood(int count) {
return "學生們今天吃了" + count + "頓飯" + ",用了公共學生卡" + stuIdCard /*+ name*/;
}
//構造器:相當于一個工具,是為了該類能夠更好的生成一個個的對象
//構造器相當于一個特殊的方法
//如果不手動的生成構造器,系統會自動的給我們添加一個無參的構造器
/*[修飾符] 類名 ([參數列表]) {
方法體語句;
}*/
//注意!注意!注意!構造器是類創建對象的唯一途徑
public Student() {
}
public Student(String name1,String sex1) {
this.name = name1;//該處的this指的是之后將要通過該構造器創建出來的對象
this.sex = sex1;
}
public Student(String name, String sex, int age, double height, double weight, String code) {
this.name = name;
this.sex = sex;
this.age = age;
this.height = height;
this.code = code;
this.weight = weight;
}
public static void main(String[] args) {
//如何通過類來創建對象,我們使用的new關鍵字+構造器實現
//語法:類類型 變量名 = new 類構造器;
//創建對象
Student caokai = new Student();
//使用對象:給對象的屬性進行賦值
caokai.age = 25;
caokai.code = "j121-001";
caokai.name = "曹凱";
caokai.sex = "男";
//使用對象:調用對象的方法
System.out.println(caokai.visitClass("java", "李老師"));//String a = caokai.visitClass(xxx,xxx);
//使用對象:調用對象的屬性
System.out.println("caokai的名字" + caokai.name);
System.out.println("caokai的身高" + caokai.height + "cm");
System.out.println("caokai的體重" + caokai.weight + "kg");
Student xuChunLin = new Student();
xuChunLin.age = 24;
xuChunLin.code = "j121-002";
xuChunLin.name = "徐春林";
xuChunLin.sex = "男";
System.out.println(xuChunLin.visitClass("java", "李老師"));
System.out.println("xuChunLin的名字" + xuChunLin.name);
System.out.println("xuChunLin的身高" + xuChunLin.height + "cm");
System.out.println("xuChunLin的體重" + xuChunLin.weight + "kg");
Student luWenXin = new Student("陸文鑫","男");
luWenXin.height = 185.0;
System.out.println("luWenXin的名字" + luWenXin.name);
System.out.println("luWenXin的性別" + luWenXin.sex);
luWenXin.printVisitClass("java", "李老師");
System.out.println("luWenXin的身高" + luWenXin.height + "cm");
System.out.println("luWenXin的體重" + luWenXin.weight + "kg");
luWenXin.address = "南通市崇川區";
System.out.println(luWenXin.myopia);
}
}
~~~
~~~java
package com.demo2;
/**
* 該類是對學生類的使用說明演示
* @author 一教室
*
*/
public class StudentUse {
//定義一個類類型的成員變量
public Student stu;
StudentUse() {
}
public static void main(String[] args) {
Student gaoJunNan = new Student("高峻楠", "男", 24, 175.0, 60.0, "j121-004");
System.out.println(gaoJunNan.name);
//gaoJunNan.address;錯誤代碼:private 修飾的成員變量和方法不能夠在其他類中被訪問
StudentUse stuUse = new StudentUse();
System.out.println(stuUse.stu);
gaoJunNan.stuIdCard = "1232";
//stuUse.stuIdCard;靜態變量不能被創建出來的對象訪問調用,只能被類調用
System.out.println(Student.stuIdCard);
System.out.println(Student.eatFood(3));
/**
* static 修飾的變量或方法是類所特有的變量和方法,
* 類是指對象的特征模板,所以類所特有的東西,對象也可以獲取到,但是不建議通過對象去獲取訪問類變量和類方法
*/
System.out.println(gaoJunNan.eatFood(3));
System.out.println(gaoJunNan.stuIdCard);
System.out.println(Student.stuIdCard);
//Student xuShuang = new Student("徐爽", "男", 24, 176, 60.0, "j121-005");
Student xuShuang = null;
xuShuang = new Student("徐爽", "男", 24, 176, 60.0, "j121-005");
//這就是為什么不建議通過對象調用修改類變量和類方法
System.out.println(xuShuang.stuIdCard);//1232
}
}
~~~
- 課程開始
- 第一課20191008
- 第二課20191009
- HTML
- CSS
- CSS第一課
- CSS第二課
- CSS第三課
- CSS第四課
- CSS第五課
- JavaScript
- Js第一課
- Js第二課
- Js第三課
- Js第四課
- Js第五課
- Js第六課
- Js第七課
- Js-事件模型
- Js-2019-10-31-標準庫
- Js-2019-11-01- 標準庫
- Js-2019-11-01-Json
- Js-2019-11-01-對象的創建
- Js-2019-11-04-this的使用
- Js-2019-11-05-storage與異常
- Js-2019-11-05-BOM與補充知識點
- Js-2019-11-06-正則表達式和計時器
- jQuery
- jQuery-2019-11-13-初識jQuery
- jQuery-2019-11-14-jQuery節點操作
- jQuery-2019-11-15-jQuery節點操作二
- jQuery-2019-11-16-jQuery效果與動畫
- Java
- Java-2019-11-27-變量直接量數據格式運算符
- Java-2019-11-28-流程控制
- Java-2019-12-02-數組
- Java-2019-12-04 面向對象
- Java-2019-12-05-封裝
- Java-2019-12-06-深入構造器
- Java-2019-12-09-繼承
- Java-2019-12-10-多態
- Java-2019-12-10-包裝類
- Java-2019-12-11-final修飾符
- Java-2019-12-11-包裝類
- Java-2019-12-11-接口
- java-2019-12-13-設計模式
- Java-2019-12-16-集合框架
- Java-2019-12-18-集合排序
- Java-2019-12-23-常用類學習
- Java-2019-12-25-異常處理
- Java-2019-12-31-內部類詳解