2021-06-15
面向过程&面向对象
- 面向过程
- 步骤清晰简单,第一步做什么,第二步做什么……
- 面对过程处理较简单问题
- 面向对象
- 物以类聚,解决问题首先思考需要哪些分类,然后对分类进行单独思考,最后对某个分类下的细节进行面向过程的思索
- 面向对象适合处理复杂的、需要多人协作的问题
- 对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,需要用面向对象的思路来分析。但是,具体到微观操作,仍然需要用面向过程的思路去处理
属性+方法=类
什么是面向对象?
- Object-Oriented Programming
- 面向对象编程的本质:以类的方式组织代码,以对象的组织(封装)数据
- 抽象
- 三大特性:
- 封装
- 继承
- 多态
- 从认识论角度考虑是先有对象后有类。对象,是具体的事物;类,是抽象的,是对对象的抽象
- 从代码运行角度考虑先有类后有对象。类是对象的模板。
方法
方法的定义
-
修饰符
-
返回类型
-
break:跳出switch,结束循环
-
return
package com.oop.demo01; //Demo01 类 import java.io.IOException; public class Demo01 { //main 方法 public static void main(String[] args) { } /* 修饰符 返回值类型 方法名(……){ //方法体 return 返回值; } */ //结束方法,返回一个结果! public static String sayhello(){ return "hello,world"; } public void print(){ return; } public void hello(){ return; } public int max(int a,int b){ return a>b ? a : b;//三元运算符,如果a>b成立,则a,否则b } //数组下标越界异常:Arrayindexoutofdounds public void readfile(String file) throws IOException{ } }
-
方法名:注意规范,见名知意
-
参数列表:(参数类型,参数名)…
-
异常抛出
方法的调用
-
静态方法
-
非静态调用
示例
package com.oop.demo01; public class Demo02 { //静态方法 static,通过类可直接调用 //非静态方法 public static void main(String[] args) { //实例化这个类 new //对象类型 对象名 = 对象值 new Student().say(); Student student = new Student(); student.say(); } //静态方法和类同时加载 public static void a(){ //b(); } //非静态方法,在类实例化后才存在 public void b(){ } }
-
形参和实参
-
值传递和引用传递
值传递
package com.oop.demo01; //值传递 public class Demo05 { public static void main(String[] args) { int a = 1; System.out.println(a); System.out.println("========================"); Demo05.change(a); System.out.println(a); } //返回值为空 public static void change(int a){ a = 10; } }
引用传递
package com.oop.demo01; //引用传递:对象,本质还是值传递 //对象,内存 public class Demo06 { public static void main(String[] args) { Person person = new Person();//实例化的过程 System.out.println(person.name);//person这个人的name属性为null System.out.println("=============================="); Demo06.change(person); System.out.println(person.name);//person这个人的name属性change为秦疆 } public static void change(Person person){ //person是一个对象:指向➡Person person = new Person();这是一个具体的人,可以改变属性 person.name = "秦疆"; } } //定义了一个Person类,有一个属性:name class Person{ String name; }
-
this关键字