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

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

Jun 25, 2017 am 10:45 AM
java objek nota Untuk

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  */
Salin selepas log masuk

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 }
Salin selepas log masuk

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 }
Salin selepas log masuk

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 }
Salin selepas log masuk

Atas ialah kandungan terperinci 5、Java中面向对象 VS 面向过程 . Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Akar Kuasa Dua di Jawa Akar Kuasa Dua di Jawa Aug 30, 2024 pm 04:26 PM

Panduan untuk Square Root di Java. Di sini kita membincangkan cara Square Root berfungsi di Java dengan contoh dan pelaksanaan kodnya masing-masing.

Nombor Sempurna di Jawa Nombor Sempurna di Jawa Aug 30, 2024 pm 04:28 PM

Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Nombor Armstrong di Jawa Nombor Armstrong di Jawa Aug 30, 2024 pm 04:26 PM

Panduan untuk Nombor Armstrong di Jawa. Di sini kita membincangkan pengenalan kepada nombor Armstrong di java bersama-sama dengan beberapa kod.

Penjana Nombor Rawak di Jawa Penjana Nombor Rawak di Jawa Aug 30, 2024 pm 04:27 PM

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Weka di Jawa Weka di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Nombor Smith di Jawa Nombor Smith di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Soalan Temuduga Java Spring Soalan Temuduga Java Spring Aug 30, 2024 pm 04:29 PM

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Cuti atau kembali dari Java 8 Stream Foreach? Cuti atau kembali dari Java 8 Stream Foreach? Feb 07, 2025 pm 12:09 PM

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

See all articles