面向对象的基本概念(前篇)
一、对象(objecrt)
两方面含义:
1、客观世界中的实体
2、可标识的存储区域
二、类(class)
1、类:具有共同属性和行为的对象集合
(1)属性:变量(字段) (姓名、年龄等)
(2)行为:函数(方法)
2、类与对象的关系
(1)类是对象的抽象(模板)
(2)对象是类的实例
三、面向对象的三大特征
封装、继承、多态
1、封装
(1)模块化:将属性和行为都封装在类中
(2)信息隐蔽:将类的细节部分隐藏起来,用户只通过受保护的接口访问某个类
2、继承
(1)继承性:父类和子类之间共享数据和方法
(2)继承的好处:
a.更好地进行抽象与分类
b.增强代码的重用率
c.提高可维护性
(3)重写:用子类中写的方法替换掉父类的方法
完成重写的条件:方法名称、参数类型、返回值和参数个数相同,权限修饰符不小于父类。
注意:
① 当创建子类对象时,内部会首先创建父类对象,子类对象之所以能引用父类对象,是因为其内部有个super用来存储父类的地址。
② 子类访问父类时,默认通过无参构造方法来访问,如果没有,那么子类在继承时则需要明确地通过super来访问
③ 当super调用构造方法时,必须写在子类构造方法的第一行。
3、多态
(1)不同对象收到同一个消息(调用方法)可产生完全不同的效果
(2)实现的细节由接收对象自行决定
[此图片来自网络,如有侵权,请联系本人删除!]
四、面向对象三大思想
面向对象思想从概念上讲分为以下三种:OOA、OOD、OOP
OOA:面向对象分析(Object Oriented Analysis)
OOD:面向对象设计(Object Oriented Design)
OOP:面向对象程序(Object Oriented Programming
五、对象的创建与使用
一个类要想真正的进行操作,则必须依靠对象,对象的定义格式如下:
类名称 对象名称 = new 类名称() ;
如果要想访问类中的属性或方法(方法的定义),则可以依靠以下的语法形式:
访问类中的属性: 对象.属性 ;
调用类中的方法: 对象.方法(实际参数列表) ;
六、创建对象内存分析
1、栈
特点:先进后出
存储的是: 基本数据类型的数据以及引用数据类型的引用
(栈内存, 通过 ‘栈指针’ 来创建空间与释放空间)
2、堆
存放的是:类的对象
所有类的对象都是通过new关键字创建
垃圾回收器 回收堆内存的规则:
当栈内存中不存在此对象的引用时,则视其为垃圾 , 等待垃圾回收器回收
3、方法区
存放的是
- 类信息
- 静态的变量
- 常量
- 成员方法
方法区中包含了一个特殊的区域 ( 常量池 )(存储的是使用static修饰的成员)
4、PC寄存器
PC寄存器保存的是 当前正在执行的 JVM指令的 地址
在Java程序中, 每个线程启动时, 都会创建一个PC寄存器
5、本地方法栈
保存本地(native)方法的地址
七、构造方法(构造器)
1、概述
作用:用于对象初始化。
执行时机:在创建对象时,自动调用
特点:所有的Java类中都会至少存在一个构造方法
(如果一个类中没有明确的编写构造方法, 则编译器会自动生成一个无参的构造方法, 构造方法中没有任何的代码!
如果自行编写了任意一个构造器, 则编译器不会再自动生成无参的构造方法。)
2、定义格式
与普通方法基本相同,区别在于:方法名称必须与类名相同,没有返回值类型的声明
八、方法的重载
方法名称相同, 参数类型或参数个数不同, 可以完成方法的重载,方法的重载与返回值无关
九、构造方法的重载
一个类, 可以存在多个构造方法:参数列表的长度或类型不同即可完成构造方法的重载
构造方法的重载 ,可以让我们在不同的创建对象的需求下, 调用不同的方法来完成对象的初始化
十、匿名对象
没有对象名称的对象 就是匿名对象。
匿名对象只能使用一次,因为没有任何的对象引用,所以将称为垃圾,等待被G·C回收。
只使用一次的对象可以通过匿名对象的方式完成。
本文地址:https://blog.csdn.net/JDBC400451/article/details/107366494
推荐阅读
-
PHP面向对象分析设计的61条军规_PHP教程
-
javascript new一个对象的实质_js面向对象
-
利用javascript的面向对象的特性实现限制试用期_javascript技巧
-
PHP面向对象和PHP面向过程的优缺点评比_PHP教程
-
第15设计模式:可复用的面向对象程序设计
-
JavaScript的单例模式 (singleton in Javascript)_js面向对象
-
JavaScript 面向对象的之私有成员和公开成员_js面向对象
-
面向对象设计模式的核心法则_javascript技巧
-
原来PHP的面向对象和java差不多啊解决办法
-
JavaScript 中的面向对象编程的详细介绍