面向对象——构造方法(重载)
生活随笔
收集整理的這篇文章主要介紹了
面向对象——构造方法(重载)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
構造方法
1、構造方法概述和格式
(1)概述:給對象的數據(屬性)進行初始化
(2)格式特點
- 方法名與類名相同(大小寫也要與類名一致)
- 沒有返回值類型,連void都沒有
- 沒有具體的返回值return;
2、構造方法的重載
(1)概述
方法名相同,與返回值類型無關(構造方法沒有返回值),只看參數列表
(2)注意事項
- 如果沒有給出構造方法,系統將自動提供一個構造方法
- 如果給了構造方法,系統將不再提供構造方法
- 所以最好一直寫出無參構造方法
3、給成員變量賦值的兩種方式的區別
/*** 無參構造方法:給屬性進行初始化* set/get方法:修改屬性值* @param args*/ public static void main(String[] args) {//無參構造創建對象Phone p1 = new Phone(); p1.setBrand("vivoxplay5");p1.setPrice(2999);p1.setBrand("vivo");p1.show();System.out.println("----------------");//有參構造創建對象Phone p2 = new Phone("vivoxplay5",2999);//這種方式并不是改名,而是將原對象變成垃圾//p2 = new Phone("vivo",2000); p2.show();} }class Phone{private String brand; //品牌private int price; //價格public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}//無參構造方法public Phone(){System.out.println("無參構造");}//有參構造器public Phone(String brand, int price) {this.brand = brand;this.price = price;System.out.println("有參構造");}public void show(){System.out.println(brand+"..."+price);}}4、長方形案例
public static void main(String[] args) {長方形 c = new 長方形(4,6);System.out.println(c.周長());System.out.println(c.面積());} } /*** 定義一個長方形類,求周長和面積的方法* 然后定義一個測試類進行測試**/class 長方形{private int a;private int b;public 長方形() { //無參構造 }public 長方形(int a, int b) { //有參構造super();this.a = a;this.b = b;}public int getA() {return a;}public void setA(int a) {this.a = a;}public int getB() {return b;}public void setB(int b) {this.b = b;}public int 周長(){return (a+b)*2;}public int 面積(){return a*b;} }5、static關鍵字
特點:
(1)隨著類的加載而加載
(2)優先于對象存在
(3)被類的所有對象共享
- 舉例:班上的同學應該共用同一個班級編號
- 如果成員變量是被所有對象共享的,那么它就應該定義為靜態的
- 舉例:飲水機(用靜態修飾)
- ? ? 水杯(不能用靜態修飾)
- 共性用靜態,特性用非靜態
(4)可以通過類名調用
- 它本身也可以通過對象名調用
- 推薦使用類名調用
- 靜態修飾的內容一般稱為:與類相關的,類成員
注意事項:
(1)在靜態方法中式沒有this關鍵字的
- 靜態是隨著類的加載而加載,this是隨著對象的創建而存在的
- 靜態比對象先存在
(2)靜態方法只能訪問靜態的成員變量和靜態的成員方法
public static void main(String[] args) {c c1 = new c();c1.print();c.print1();}} class c{int num1=10; //非靜態成員變量static int num2 = 20; //靜態成員變量public void print(){ //非靜態成員方法,既可以訪問靜態的,也可以訪問非靜態的 System.out.println(num1);System.out.println(num2);}public static void print1(){ //靜態成員方法//System.out.println(num1); //靜態成員方法不能訪問非靜態的 System.out.println(num2);} }6、靜態變量和成員變量的區別
(1)所屬不同
靜態變量屬于類,所以也稱為類變量
成員變量屬于對象,所以也稱為實例變量(對象變量)
(2)內存中位置不同
靜態變量存儲與方法區的靜態區
成員變量存儲于堆內存
(3)內存出現時間不同
靜態變量隨著類的加載而加載,隨著類的消失而消失
成員變量隨著對象的創建而存在,隨著對象的消失而消失
(4)調用不同
靜態變量可以通過類名調用,也可以通過對象調用
成員變量只能通過對象名調用
7、Math類的隨機數功能
public static void main(String[] args) {double d = Math.random(); //生成一個隨機小數 System.out.println(d);//生成1-100的隨機數int a = (int)(Math.random()*100+1);System.out.println(a);}}?
轉載于:https://www.cnblogs.com/lc1997/p/10685877.html
總結
以上是生活随笔為你收集整理的面向对象——构造方法(重载)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简洁的描述SpringMVC工作流程
- 下一篇: 关联tomcat源代码