java 面向对象初级
一 面向对象
初学Java可能有很多人问面向对象是什么?
先拿比较官方的语言来说就是:面向对象顾名思义就是把现实中的事务都抽象成为程序设计中的“对象”,其基本思想是一切皆对象,是一种“自下而上”的设计语言,先设计组件,再完成拼装。
可能你还不懂,那我们就用几个通俗的例子来表达一下,其实在很早很早以前编程是面向过程的。那什么又是面向过程呢,来我们看看下面的例子你就可能明白了。
比如有一天你突然想吃烧茄子了,那你该怎么办?现在我用面向过程和面向对象来描述:
面向过程:自己出门,买茄子、油、调料、鸡蛋等等然后在自己做放到盘子里。
面向对象:到饭店,只要说一声:“老板,来份烧茄子”,然后装满一盘的烧茄子放到了你的面前。
可能你还有点不理解,那我们再举一个例子:
比如你要砌一堵墙:
面向过程:1、拿起一块砖头;2、砖头上抹上水泥;3、将砖头砌在该砌的位子上。
面向对象:1、招一个工人,2、指挥工人砌墙。
可能砌一堵还体会不到面向对象和面向过程的有什么大的差别,那你现在好好想想如果是砌一百堵墙呢?
从上面的例子中,我们发现面向过程显的特别死板,没有面向对象灵活。需要关注很繁琐的过程,当我们做一个大的开发的时候,如果只注重过程的话,代码写到一定程度就很难再编写下去。而面向对象不同,面向对象不需要具体的细节,而关注的是架构的问题,相比面向过程,易维护、易复用、易扩展。
面向对象三大思想
面向对象思想从概念上讲分为以下三种:OOA、OOD、OOP
OOA:面向对象分析(Object Oriented Analysis)
OOD:面向对象设计(Object Oriented Design)
OOP:面向对象程序(Object Oriented Programming)
面向对象三大特征
封装性:所有的内容对外部不可见
继承性:将其他的功能继承下来继续发展
多态性:方法的重载本身就是一个多态性的体现
二 类与对象
类表示一个共性的产物,是一个综合的特征,而对象,是一个个性的产物,是一个个体的特征。
类必须通过对象才可以使用,对象的所有操作都在类中定义。
类由属性和方法组成,
属性:就相当于人的一个个的特征 ·。
方法:就相当于人的一个个的行为,例如:说话、吃饭、唱歌。
类的定义格式:
class 类名称{
成员属性;
成员方法;
}
例如:
类创建的注意事项:
(1)类必须写在 .java 文件中。
(2)一个 .java文件中,可以写几个类,但是用public修饰的只能存一个。
(3).java文件的文件名称,必须与public修饰的类名完全一致,否则报错。
(4)在同一个包(文件夹)中,类名不能相同。
三 栈内存、堆内存
栈内存存储的是:对象的名称以及基本的数据类型的值。
特点:先进后出,存取速度快,但存储区域小。
堆内存存储的是:类的对象。
特点;内存空间大,不用关注堆内存中需要开辟多少存储空间,也不用关注内存占用时长。
关于栈内存和堆内存也可以这样理解:
栈内存存储的是地址 地址指向堆内存。
垃圾回收器回收堆内存的规则:
当栈内存不存在此对象的引用时,则视其为垃圾回收期回收。
四 构造方法
作用:用于对象的初始化。
执行时机:在创建对象时自动调用。
特点:
1、所有的java类都自少存在一个构造方法。
2、如果一个类中没有明确的编写构造方法,则编译器会自动生成一个无参构造方法,构造方法中没有任何的代码。
3、如果自行编译写了任意一个构造器,则编译器不会再自动生成无参的构造方法。
创建无参构造方法和多参构造方法
如图:
Person p = new Person();
在右侧Person后面出现的小括号, 其实就是在调用构造方法 !
再main方法中调用无参构造函数:
如图:
打印内容:
在main方法中调用多参构造函数:
打印内容:
五 方法的重载
一个类定义的方法,是允许重载的(即方法的名称相同)
重载:
1、方法名称相同
2、参数列表长度或参数列表类型或参数顺序不同。
注意:
方法的重载与返回值类型无关。
打印内容:
构造方法也具有重载。
六 匿名对象
没有对象名称的对象就是匿名对象。
1、匿名对象只能使用一次,因为没有任何对象引用,所以将称为垃圾,等待被G:C回收
2、只使用一次的对象可以通过匿名对象的方式来完成,这一点在以后的开发中经常使用到。
本文地址:https://blog.csdn.net/weixin_50396997/article/details/109957758
推荐阅读
-
Python面向对象之类的定义与继承用法示例
-
重温面向对象核心 下 : 你一定能看懂的委托和事件
-
面试官:详细谈谈Java对象的4种引用方式
-
php面向对象的方法重载两种版本比较
-
java的面向对象特征(java中对象的概念)
-
PHP学习记录之面向对象(Object-oriented programming,OOP)基础【类、对象、继承等】
-
PHP学习记录之面向对象(Object-oriented programming,OOP)基础【接口、抽象类、静态方法等】
-
JavaScript使用面向对象实现的拖拽功能详解
-
java面向对象基础_final详细介绍
-
java 面向对象的理解(简述java面向对象的三个基本特征)