面向对象编程
一、面向过程&面向对象
面向过程思想
- 步骤清晰简单,第一步做什么,第二步做什么…
- 面对过程适合处理一些较为简单的问题
面向对象思想
- 物理类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。
- 面向对象适合处理复杂的问题,适合处理需要多人写作的问题。
对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是具体到微观操作,仍然需要面向过程的思路去处理。
二、什么是面向对象
- 面向对象编程(Object-Oriented Programming,OOP)
- 面向对象编程的本质就是:以类的方式组织代码,以对象的方式组织(封装)数据。
- 抽象
-
三大特性:
- 封装
- 继承
- 多态
- 从认识论角度考虑是现有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象
- 从代码运行角度考虑是先有类后有对象。类是对象的模板。
三、回顾方法及加深
-
方法的定义
-
修饰符
-
返回类型
-
方法名:见名知意
-
参数列表
-
异常抛出
public void readFile(String file) throws IOException{
}
方法调用
-
静态方法 static
- 静态方法可以直接用类名调用方法
-
public class Student { //非静态方法 public static void say(){ System.out.println("学生说话了"); } }
-
public class demo01 { public static void main(String[] args) { //实例化这个类 new一个出来 //对象类型 对象名=对象值; // Student student=new Student(); // student.say(); Student.say(); } }
-
非静态方法 没有static
-
非静态方法要先进行实例化
-
public class Student {
//非静态方法
public void say(){
System.out.println("学生说话了");
}
}
public class demo01 {
public static void main(String[] args) {
//实例化这个类 new一个出来
//对象类型 对象名=对象值;
Student student=new Student();
student.say();
}
}
public static void a(){
b();
}
//类实例化之后才存在,静态不能调用非静态
public void b(){
}
-
形参和实参
-
public class demo02 { public static void main(String[] args) { int a=1; System.out.println(a);//1 demo02.change(a); System.out.println(a);//1 } // 没有返回值,所以第二个打印接收不到,所以输出原来的 public static void change(int a){ a=10; } }
-
值传递和引用传递
-
//引用传递:对象,本质还是值传递 //类似指针 //对象; public class demo03 { public static void main(String[] args) { Person person=new Person(); System.out.println(person.name);//null demo03.change(person); System.out.println(person.name);//中国 } public static void change(Person person){ //person是一个对象:指向-->person person = new Person(); person.name="中国"; } //定义了一个person类,有一个属性:name static class Person{ String name; } }
-
this关键字:当前类
。