面向过程&&面向对象
- 面向过程思想
- 步骤清晰简单
- 面对过程时候处理一些较为简单问题
- 面向对象思想
- 物以类聚,分类的思维模式
- 面向对象适合处理复杂的问题,适合处理需要多人协作的问题
- 对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。
面向对象编程(Object-Oriented Programming,OOP)
- 面向对象编程的本质:以类的方式组织代码,以对象组织(封装)数据
- 抽象
- 三大特性:
- 封装
- 继承
- 多态
- 从认识论角度考虑是先有对象后有类。对象是具体的事物。类是抽象的,是对对象的抽象
- 从代码编程角度考虑是先有类后有对象。类是对象的模板
回顾方法及加深
- 方法的定义
- 修饰符
- 返回类型
- break:跳出switch,结束循环;return:结束方法,返回一个结果
- 方法名:规范、见名知意
- 参数列表:(参数类型 参数名)(…)
- 异常抛出
package java_oop.demo01;
import java.io.IOException;
/**
* @author IT_Jay
* @date 2022/1/22 17:47
*/
//Demo01 类
public class Demo01 {
//main 方法
public static void main(String[] args) {
}
/*
修饰符 返回值类型 方法名(。。。){
//方法体
return 返回值;
}
*/
//return 结束方法,返回一个结果!
public String sayHello(){
return "Hello World!";
}
public void print(){
return;
}
public int max(int a,int b){
return a>b ? a:b; //如果a>b,返回a,否则返回b
}
//数组下标越界异常:ArrayIndexOutOfBounds
//IO流异常
public void readFile(String file) throws IOException{}
}
-
方法调用:递归
- 静态方法
- 非静态方法
package java_oop.demo01; /** * @author IT_Jay * @date 2022/1/22 18:05 */ public class Demo02 { public static void main(String[] args) { //调用静态方法 static //类名.方法名 Student.say(); //调用非静态方法 //实例化这个类 new //对象类型 对象名 = 对象值 Student student = new Student(); student.say1(); } //和类一起加载 public static void a(){ // b(); //此时会报错,若a()和b()都为(或都不是)static,则可这样写 } //实例化后才存在 public void b(){ } }
package java_oop.demo01; /** * @author IT_Jay * @date 2022/1/22 18:09 */ //学生类 public class Student { //静态方法 static public static void say(){ System.out.println("学生说话了。"); } //非静态方法 public void say1(){ System.out.println("学生说话了!"); } }
- 形参和实参
package java_oop.demo01; /** * @author IT_Jay * @date 2022/1/22 18:31 */ public class Demo03 { public static void main(String[] args) { Demo03 demo03 = new Demo03(); //实际参数和形式参数的类型要对应 System.out.println(demo03.add(1,2)); //实参 } //形参 public int add(int a,int b){ return a+b; } }
- 值传递和引用传递
package java_oop.demo01; /** * @author IT_Jay * @date 2022/1/22 18:37 */ //值传递 public class Demo04 { public static void main(String[] args) { int a=1; System.out.println(a); Demo04.change(a); System.out.println(a); } //返回值为空 public static void change(int a){ a=10; } }
package java_oop.demo01; /** * @author IT_Jay * @date 2022/1/22 18:41 */ //引用传递:引用对象,本质还是值传递 public class Demo05 { public static void main(String[] args) { Person person = new Person(); System.out.println(person.name); //null Demo05.cahnge(person); System.out.println(person.name); } public static void cahnge(Person person){ //person是一个对象,指向----》Person person = new Person();这是一个具体的人,可以改变属性! person.name="IT_Jay"; } } //定义一个Person类,有一个属性name class Person{ String name; }
- this关键字