Java10

面向对象编程

面向对象概述

面向过程 & 面向对象
对于描述复杂的事物.为了从宏观上把握、从整体分析,使用面向对象的思想;在微观操作的实现上,采用面向过程的思想

  • 面向过程思想
  • 顺序结构
  • 适合处理简单问题
  • 面向对象思想
  • 分类的思维模式

面向对象编程(Object- Oriented Programming, OOP):

  • 本质:以类的方式组织代码,以对象的组织封装数据
  • 思想:抽象
  • 特性:封装继承多态
  • 从分析问题的角度:先有对象,后有类;对象,是具体的事物;类,是对对象的抽象
  • 从编写代码的角度:先有类,后有对象;类,是对象的模板

方法回顾

方法的定义

修饰符 返回值类型 方法名(参数列表) {
	方法体
	...
	return 返回值;
}

方法的调用

  • 静态方法:加static修饰符的方法
  • 和类一起加载
  • 可以直接通过类名调用:Demo.test();
  • 非静态方法
  • 在类实例化之后才存在
  • 要先实例化类,才能调用
Method method = new Method();
method.say("june");

值传递

Java为值传递
值传递是对基本类型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量.

引用传递

引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身
str是引用类型,变量中保存的只是实际对象的地址。一般称这种变量为"引用",引用指向实际对象,实际对象中保存着内容.

类和对象的关系

  • 类是一种抽象的数据类型,是对一类事物整体描述,并不代表某一具体事物
  • 对象是类抽象概念的具体实例,能体现出具体的功能和属性

对象的创建分析

使用new关键字创建对象
在使用new关键字创建对象时,除了会分配内存空间外,还会给创建好的对象进行默认初始化,以及对类中构造器的调用,

构造器

类中的构造器也称为构造方法,是在创建对象时调用的.
查看空类的class文件(反编译代码),发现默认有一个空的方法:

public class Person {
    public Person() {
    }
}

这个与类同名的方法就是构造器,观察发现构造器有2个特点:

  1. 必须和类名相同
  2. 没有返回类型,也不能写void

构造器的作用:

  1. 使用new关键字,本质为调用构造器
  2. 构造器用于初始化值

构造器分为:

  • 无参构造:默认为无参空构造器
  • 有参构造:若定义了有参构造,无参就必须显式定义

this关键字用于表示当前对象
IDEA快速生成构造器:Win: alt + Inset;Mac:Command + N

内存分析

  • 堆内存空间(Heap):保存的是对象中具体的属性信息
  • 栈内存空间(Stack):是保存的堆内存的地址数值
  • 方法区:存放所有的类,及其变量和方法,以及被 static修饰的变量或方法(随类一起加载)

一个对象,调用一个方法

栈中存放引用变量的地址信息,变量p指向堆内存中分配的空间
方法在栈中运行,遵循"先进后出,后进先出"的原则,变量p通过地址信息,寻找堆内存中的方法信息.

两个对象,调用同一方法

类的方法和属性变量都存放在方法区中,对象调用方法时,根据对象中方法标记(地址值),去类中寻找方法信息。这样不论多少个对象,方法信息只保存一份,节约内存空间

一个对象(引用),作为参数传递到方法

引用类型作为参数,传递的是地址值

tag(s):
show comments · back · home