首頁 Java java教程 5、Java中面向对象 VS 面向过程

5、Java中面向对象 VS 面向过程

Jun 25, 2017 am 10:45 AM
java 物件 筆記 面向

1、物件導向 VS 程式導向 

 1 /* 2  * 理解一:人开门 3  * 面向过程:人 打开门 4  * 面向对象: 5  * 人{ 6  *    打开(){ 7  *        门。开开(); 8  *    } 9  * }10  * 门{11  *     开开(){12  *     }13  * }14  * 
15  * 理解二:人把大象装进冰箱16  * 面向过程:17  *     1、打开冰箱;18  *     2、把大象放进去;19  *     3、关闭冰箱门;20  * 面向对象:21  * 人{22  *     打开(冰箱){冰箱.开开()}23  *     操作(大象){大象。进入(冰箱)}24  *     关闭(冰箱){冰箱。合上()}25  * }26  * 大象{27  *     进入(冰箱){}28  * }29  * 冰箱{30  *     开开(){}31  *     合上(){}32  * }33  */
登入後複製

2、物件導向的程式設計著重於類別的設計!

  2.1、一個專案或工程不管多龐大一定是有一個的類別構成的。

  2.2、類別是抽象的,好比是製造汽車的圖紙。而具體的一輛一輛的車,是根據圖紙製造的,實際上就是類別的實例化

 1 /* 2  * 1、面向对象的编程关注于类的设计 3  * 2、设计类实际上就是设计类的成员 4  * 3、基本的类的成员,属性(成员变量或Field)&方法(Method) 5  */ 6 public class TestPerson { 7     public static void main(String[] args) { 8         Person p1 = new Person(); 9         p1.info();10         11         p1.name = "钟超";12         p1.age = 21;13         p1.sex = true;14         p1.info();15         16         p1.setName("张三");//p1.name = "张三"17         p1.info();18         19         Person p2 = p1;20         System.out.println("P1:" + p1);21         System.out.println("P2:" + p2);22         p2.info();23         24         p2 = new Person();25         System.out.println("P2:" + p2);26         p2.info();27         //实例化Scanner类的对象,通过此对象.nextXxx的方法进行调用,完成相应的功能;28         Scanner s = new Scanner(System.in);29         int i = s.nextInt();30         31         Person p3 = new Person();32         p3.info();33     }34 }35 //类:是抽象的。36 class Person{37     //1.属性38     String name;39     int age = 10;40     boolean sex;41     42     //2.方法43     public void eat(){44         System.out.println("人吃饭");45     }46     public void sleep(){47         System.out.println("人睡觉");48     }49     50     public String getName(){51         return name;52     }53     public void setName(String n){54         name = n;55     }56     57     public void info(){58 //        eat();59 //        sleep();60         System.out.println("name:" + name + "age:" + age + "sex:" + sex);61     }62 }
登入後複製

3、完成一個項目(或功能)的思路

  3.1、所要完成的功能對應的類別的物件是否存在;

  3.2、若存在,則透過物件直接呼叫對應的類別中的屬性或方法即可;

# 3.3、若不存在,需要創建類別的物件。甚至說,類別都不存在就需要設計類別;

4、物件導向程式設計的三條主線:

  1、類別以及類別的構成成分:屬性方法建構子程式碼區塊內部類別

  2、物件導向程式設計的特徵:封裝性繼承性多型(抽象性)

  3、其他的關鍵字:this super package import static final abstract interface...

類別:

1、關注類別的設計

2、類別的組成成分:

  1、屬性(成員變量,Field)

  2、方法(成員方法,函數,Method)

3、關於屬性:

4、方法:

  1 /*  2  * 一、面向对象思想的落地法则一:  3  * 1.设计类并设计类的成员(成员变量&方法)  4  * 2.通过类来创建类的对象(也称作类的实例化)  5  * 3、通过“对象。属性”或“对象。方法”来调用,完成相应的功能  6  * 
  7  * 二、创建的多个对象,彼此各自拥有一套类的属性,当对其中一个对象的属性进行修改时。  8  * 不会影响到其他对象的属性值。  9  * 
 10  * 三、类的属性(成员变量) 11  *     成员变量    VS     局部变量 12  *     相同点:1、遵循变量声明的格式;数据类型 变量名 = 初始化值; 13  *          2、都有作用域: 14  *     不同点:1、声明的位置的不同:成员变量:生命在类里,方法外边; 15  *                               局部变量:声明在方法内,方法的形参部分,代码块内 16  *          2、成员变量的修饰符有四个:public(公共的) private(私有的) protected 缺省 17  *                    局部变量没有修饰符:与所在的方法的修饰符一样; 18  *          3、初始化值:一定会有初始化值; 19  *                   成员变量:如果在声明的时候,不显示的赋值,那么不同的数据类型会有不同的默认初始化值; 20  *                 byte short int long = 0; 21  *                 float double = 0。0; 22  *                 char = 空格; 23  *                 boolean = false; 24  *                 引用类似的变量  = null; 25  *                  局部变量:一定要显示的赋值(局部变量没有默认初始化值); 26  *          4、二者在内存中存放的位置不同,成员变量在堆空间中,局部变量在栈空间中; 27  * 总结:关于变量的分类:1、按照数据类型的不同:基本数据类型(8种)&引用数据类型 28  *                  2、按照声明位置的不同::成员变量&局部变量 29  * 
 30  * 四、类的方法:提供某种功能的实现 31  *         1、实例    public void eat(){方法体} 32  *               public String getName(){} 33  *               public void setName(String n){} 34  *         2、格式:权限修饰符  返回值类型(void:无返回值/具体返回值) 方法名(形参){} 35  *         3、关于返回值类型 void:表名此方法不需要返回值 
 36  *                     有返回值的:在方法的最后一定有return + 返回值类型对应的变量 37  *           记忆:void与return不可以同时出现在一个方法内。 38  *         4、方法内可以调用本类的其他方法和属性,但是不能再方法内在定义其他方法; 39  * 
 40  * ClassRoom Car ... 41  */ 42 public class Zoo { 43     public static void main(String[] args) { 44         //基本数据类型的声明:数据类型 变量名 = 初始化值; 45         int i = 10; 46         //1.类的实例化:如下的a1就是一个实实在在的对象 47         Animal a1 = new Animal(); 48         //int[] arr = new int[10]; 49         //通过对象调用属性 50         a1.name = "花花"; 51         a1.age = 3; 52         System.out.println("name:" + a1.name + "\t" + "age:" + a1.age); 53         //通过对象调用方法 54         a1.eat(); 55         a1.sleep(); 56          57         //在创建一个对象 58         Animal a2 = new Animal(); 59         System.out.println("name:" + a2.name + "\t" + "age:" + a2.age); 60         a2.name = "小花"; 61         System.out.println("name:" + a1.name + "\t" + "age:" + a1.age); 62         System.out.println("name:" + a2.name + "\t" + "age:" + a2.age); 63         //a3与a1一样,a3不意味着相较于a1重新创建的一个对象,而是a1与a3共用一个对象实体 64         Animal a3 = a1; 65         System.out.println("name:" + a3.name + "\t" + "age:" + a3.age); 66         a3.name = "维尼熊"; 67         System.out.println("name:" + a1.name + "\t" + "age:" + a1.age); 68          69         System.out.println(a2.getName()); 70         System.out.println(a2.desc()); 71     } 72 } 73  74 class Animal{ 75     //1.属性 76     String name; 77     int age; 78     //2.方法 79     public void eat(){ 80         System.out.println("动物进食"); 81     } 82     public void sleep(){ 83         System.out.println("动物休眠"); 84         //return; 85     } 86     public String getName(){ 87         return name; 88     } 89     public int getAge(){ 90         return age; 91         //其后不可以声明语句 92         //System.out.println("Hello"); 93     } 94     //当通过对象调用此方法是,会将方法的返回值提供给方法的调用者,也就是当前的对象。 95     public String desc(){ 96         if(age > 2){ 97             return "恰同学少年"; 98         }else{ 99             return "还是看动画片的 年龄";100         }101     }102     public void setName(String n){103         name = n;104     }105     public void addAge(){106         int i = 2;107         age += i;108     }109     public void info(){110         //可以在方法内调用本类的其他方法,但是不可以在方法内在定义新德尔方法111         eat();112         sleep();113 //        public void breathJ(){114 //            System.out.println("呼吸");115 //        }116     }117     //System.out.println("Hello!");118 }
登入後複製

##5 、物件導向程式設計思想的落地法則一:

  1、設計並創建類別以及類別的成分;

  2、實例化類別的物件;

  3、透過「物件.屬性」或「物件.方法」的形式完成某項功能

6、類別的初始化記憶體解析:

  6.1、記憶體分割的結構:

#堆疊(stack):局部變數、物件的參考名稱、陣列的引用名稱

    堆(heap):new出來的「東西」(例如:物件的實體,陣列的實體),含成員變數

    方法區:含字串常數

    靜態域:宣告為static的變數

  6.2、理解的基礎上,要學會基本的創建的類別的物件在記憶體中的運行。

7、方法的重載(overload):

要求:1、同一個類別中;
*   2、方法名稱必須相同;
*   3、方法的參數清單不同;1、參數的個數不同;
*  2、參數型別不同;
*   4、方法的重載與方法的回傳值型別沒有關係;

 1 /* 2  * 方法的重载(overload) 3  * 要求:1、同一个类中; 4  *        2、方法名必须相同; 5  *        3、方法的参数列表不同;1、参数的个数不同; 6  *                       2、参数类型不同; 7  *        4、方法的重载与方法的返回值类型没有关系; 8  */ 9 public class TestOverLoad {10 11 }12 class OverLoad{13     //定义两个int型变量的和14     public int getSum(int i, int j){15         return i + j;16     }17     //定义三个int型变量的和18     public int getSum(int i, int j, int k){19         return i + j + k;20     }21     //不能与其他几个方法构成重载22 //    public int getSum1(int i, int j, int k){23 //        return i + j + k;24 //    }25 //    public void getSum(int i, int j, int k){26 //        System.out.println(i + j + k);27 //    }28     //定义两个double型的数据的和29     public double getSum(double d1, double d2){30         return d1 + d2;31     }32     //定义三个double型数据的和33     public void getSum(double d1,double d2,double d3){34         System.out.println(d1 + d2 + d3);35     }36     //以下两个方法也构成重载37     public void method1(int i, String str){38         39     }40     public void method1(String str1, int j){41         42     }43 }
登入後複製

以上是5、Java中面向对象 VS 面向过程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java 中的平方根 Java 中的平方根 Aug 30, 2024 pm 04:26 PM

Java 中的平方根

Java 中的完美數 Java 中的完美數 Aug 30, 2024 pm 04:28 PM

Java 中的完美數

Java 中的隨機數產生器 Java 中的隨機數產生器 Aug 30, 2024 pm 04:27 PM

Java 中的隨機數產生器

Java中的Weka Java中的Weka Aug 30, 2024 pm 04:28 PM

Java中的Weka

Java 中的阿姆斯壯數 Java 中的阿姆斯壯數 Aug 30, 2024 pm 04:26 PM

Java 中的阿姆斯壯數

Java 中的史密斯數 Java 中的史密斯數 Aug 30, 2024 pm 04:28 PM

Java 中的史密斯數

Java Spring 面試題 Java Spring 面試題 Aug 30, 2024 pm 04:29 PM

Java Spring 面試題

突破或從Java 8流返回? 突破或從Java 8流返回? Feb 07, 2025 pm 12:09 PM

突破或從Java 8流返回?

See all articles