一.類的定義
一個全面的類定義是比較復雜的, 定義如下:
二.類的對象
1.如何創建對象
類名 對象名=new 類名();
2.如何訪問類的成員屬性?
對象名.屬性名
3.一個簡單的程序實例
public class Demo1 { public static void main(String[] args) { //創建Cat的一個對象
Cat cat1=new Cat(); cat1.age=3; cat1.name="xiaohua"; //創建Cat的第二個對象
Cat cat2; //將cat1賦值給cat2
cat2=cat1; System.out.println(cat2.age+" "+cat2.name); } } class Cat { int age; String name; }
運行結果:
3 xiaohua
三.類的成員方法
1.類的成員方法的定義
2.一個簡單的程序實例
public class Demo2 { public static void main(String[] args) { Calculator calculator=new Calculator(); calculator.calculate(100); System.out.println(calculator.add(100, 100)); } } class Calculator{ //成員方法
public void calculate(int n){ System.out.println(n*(n+1)/2); } public int add(int n1,int n2){ return n1+n2; } }
運行結果:
5050
200
四.類的構造方法
1.構造方法的特點
(1).構造方法名和類名相同;
(2).構造方法沒有返回值;
(3).主要作用是完成對新對象的初始化;
(4).在創建對象時,系統自動調用該類的構造方法;
(5).一個類可以有多個構造方法;
(6).每個類都有一個默認的構造方法.
2.一個簡單的程序實例
public class Demo3 { public static void main(String[] args) { Person p1=new Person(); System.out.println("姓名:"+p1.name+"年齡:"+p1.age); Person p2=new Person(10,"xiaoming"); System.out.println("姓名:"+p2.name+"年齡:"+p2.age); } } class Person { int age; String name; //空構造方法
public Person(){ } //有參構造方法
public Person(int a,String n){ age=a; name=n; } }
運行結果:
姓名:null年齡:0
姓名:xiaoming年齡:10
五.類變量與類方法
1.類變量
(1).類變量是與類相關的, 是公共屬性;
(2).加上static稱為類變量或者靜態變量, 否則稱為實例變量;
(3).實例變量是屬於每個對象個體的屬性;
(4).類變量可以通過類名.類變量名或者對象名.類變量名直接訪問.
2.類方法
(1).類方法是與類相關的, 是公共的方法;
(2).類方法中不能訪問非靜態變量;
(3).可以通過類名.類方法名或者對象名.類方法名使用.
3.簡單的程序實例
public class Demo4 { public static void main(String[] args) { Child child1=new Child(8, "xiaohuang"); child1.joinGame(); Child child2=new Child(10, "xiaoming"); child2.joinGame(); //訪問類變量
System.out.println("共有"+child1.total+"個小孩參加游戲"); System.out.println("共有"+child2.total+"個小孩參加游戲"); System.out.println("共有"+Child.total+"個小孩參加游戲"); } } class Child { int age; String name; //類變量(靜態變量)
static int total=0; public Child(int age,String name) { this.age=age; this.name=name; } //統計參加游戲的小孩人數
public void joinGame() { total++; } }
運行結果:
共有2個小孩參加游戲
共有2個小孩參加游戲
共有2個小孩參加游戲
public class Demo5 { static int i=1; static { i++; } public Demo5() { i++; } public static void main(String[] args) { System.out.println(i); Demo5 d1=new Demo5(); System.out.println(i); Demo5 d2=new Demo5(); System.out.println(i); } }
運行結果:
2
3
4
public class Demo6 { public static void main(String[] args) { Stu stu1=new Stu(10,"xiaoming",120); Stu stu2=new Stu(20,"xiaohuan",320); System.out.println(Stu.getTotalFee()); } } class Stu { int age; String name; static int totalFee=0; public Stu(int age,String name,int fee) { this.age=age; this.name=name; totalFee+=fee; } //靜態變量用靜態方法訪問 //靜態方法只能訪問靜態變量 //普通方法可以訪問普通的成員變量,也可以訪問靜態變量
public static int getTotalFee() { return totalFee; } }
運行結果:
440