一、什么是面向对象
Java的核心思想就是面向对象!
面向对象思想:
-
物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考,最后才对某个分类下的细节进行面向过程的思索。
-
面向对象适合处理复杂的问题,需要多人协作的问题。
-
对于描述复杂的事物,为了从宏观上整体合力分析,我们额需要使用面向对象的思路来分析整个系统。(但是,具体到微观操作,仍然需要面向过程的思路去处理。)
面向对象编程(Object-Oriented-Programming):
本质是以类的方式组织代码,以对象的形式(封装)数据,核心是”抽象“。
三大特性:
-
封装
-
继承
-
多态
从认识论的角度考虑,先有对象后有类,类是对具体的对象的抽象。
从代码运行的角度考虑,先有类后有对象,类是对象的模板。
二、方法回顾及加深
方法的调用:递归
-
静态方法&非静态方法
package com.oop.Demo01; public class Demo02 { public static void main(String[] args) { //实例化这个Student类,然后才能调用其非静态方法 //类名 对象名 = new 类方法名; Student student = new Student(); student.chat(); } /* static静态方法是和类一起加载的,它的时间片是很早的,而非静态方法是类实例化后才存在 所以,static静态方法不能调用非静态方法,因为还不存在!!! 而static静态方法可以调用static静态方法,非静态方法可以调用非静态方法,非静态方法可以调用static静态方法 */ public static void a(){ //b();错误 } public void b(){ a(); } }
-
形参&实参
-
值传递&引用传递
package com.oop.Demo01; public class Demo03 { public static void main(String[] args) { //int a = 1; //System.out.println(a); //Demo03.change(a);//传值调用 //System.out.println(a); //引用调用: 传递对象,本质还是值传递 //对象,内存! Person person = new Person(); System.out.println(person.name);//null Demo03.change(person);//传递对象作为参数调用change()方法 System.out.println(person.name);//姚政 } public static void change(Person person){ //person是一个对象,指向的是 ---> Person person = new Person(); 这是一个具体的人可改变属性! person.name="姚政"; System.out.println(person.name); } } //定义了一个Person类,有一个属性:name class Person{ String name; }
-
this关键字
三、类与对象的创建
类 = 属性 + 方法
使用new关键字创建对象:
使用new关键字创建对象的时候,除了分配内存空间之外,还会对创建的对象进行初始化,以及对类中构造器的调用。
类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的,并且它满足:
-
必须和类的名字相同
-
必须没有返回类型,也不能加 void
创建对象的内存分析:
四、小结
-
类与对象:类是一个模板、抽象,对象是一个具体的实例
-
方法:定义、调用
-
对象的引用:引用类型,对象是通过引用来操作的,栈--->堆,引用的是对象在堆中的地址
-
属性:字段Field 成员变量
默认初始化:
数字: 0 0.0
char: u0000
boolean: false
引用: null
修饰符 属性类型 属性名 = 属性值
-
对象的创建和使用
-
必须使用new关键字创建对象 ,构造器 Person yaozheng = new Person();
-
对象的属性 yaozheng.name
-
对象的方法 yaozheng.study()
-
-
类:
静态属性 属性
动态属性 方法