JAVA打怪之路 - 面向对象编程上

面向对象编程上

JAVA面向对象的特性是其卓越的技术特点,赋予万事万物对象的特征,面向过程和面向对象之间的碰撞,引发新的开发语言潮流。

一、面向过程(POP) 与 面向对象(OOP)

二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。

二、对象的内存解析

① 堆(Heap),此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配。
② 栈(Stack),是指虚拟机栈。虚拟机栈用于存储局部变量等。局部变量表存放了编译期可知长度的各种基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference类型,它不等同于对象本身,是对象在堆内存的首地址)。 方法执行完,自动释放。
③ 方法区(Method Area),用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

内存分析图在这里插入图片描述
三、类及类的成员

(1) 类(Class)和对象(Object)是面向对象的核心概念。

① 类 是对一类事物的描述,是抽象的、概念上的定义。
类的访问机制:在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(例外:static方法访问非static,编译不通过。)在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员。
② 对象 是实际存在的该类事物的每个个体,也称为实例(instance)。
创建对象语法: 类名 对象名 = new 类名();
匿名对象: new Person().shout(); 如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。我们经常将匿名对象作为实参传递给一个方法调用。
③ Object类: Object类是所有Java类的根父类,如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 。
④ 包装类: 在这里插入图片描述
在这里插入图片描述
(2) 常见的类的成员有:
① 属 性(成员变量)
在这里插入图片描述
对象属性的默认初始化赋值
在这里插入图片描述
在这里插入图片描述
② 方法
方法是类或对象行为特征的抽象,用来完成某个功能操作。在某些语言中也称为函数或过程。将功能封装为方法的目的是,可以实现代码重用,简化代码。Java里的方法不能独立存在,所有的方法必须定义在类里。格式如下:
在这里插入图片描述
方法重载 (overload)
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。与返回值类型无关,只看参数列表,且参数列表必须不同。
例如://返回两个整数的和 int add(int x,int y){return x+y;}
//返回三个整数的和 int add(int x,int y,int z){return x+y+z;}
//返回两个小数的和 double add(double x,double y){return x+y;}
方法重写:
在子类中对从父类中继承来的方法进行改造,称为方法的重置、覆盖。
在这里插入图片描述
可变个数的形参:JDK5.0后,采用可变个数形参来定义方法,传入多个同一类型变量。 public static void test(int a ,String…books);
方法参数的值传递机制:Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。
① 形参是基本数据类型:将实参基本数据类型变量的“数据值”传递给形参。
② 形参是引用数据类型:将实参引用数据类型变量的“地址值”传递给形参。

递归(recursion)方法:一个方法体内调用它自身。方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死循环。

③ 构造器
在这里插入图片描述
④ 代码块
在这里插入图片描述
在这里插入图片描述
⑤ 内部类
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值