Java学习笔记之面向对象1

时间:2023-02-25 23:37:42

Java学习笔记之面向对象1

什么是面向过程思想?面向过程简单的讲就是描述清楚完成一件事情所需的所有步骤,比如吃饭。在吃饭前先要准备好吃饭的食材,然后清洗食材、餐具,再开始用餐具做饭,做好之后再将做好的饭菜放入对应的餐具,最后才开始吃饭……中间有很多具体琐碎的步骤都需要我们一一完成。在计算机语言中的典型代表就是C语言。

什么是面向对象思想?面向对象简单的讲就是在完成一件事情时,把具体的细节交给专业的人去做,我们只需要去调用他们相应的功能,然后他们把完成的情况反馈给我们,最后得到最终的结果。还以吃饭为例,我们去餐馆吃饭时,只需对照菜单(相当于javaAPI)点菜,然后付钱(传入参数),最后就等待吃饭了。整个做饭的过程由专业的厨师等人来完成,我们只需等待最终的结果。在计算机语言中的典型代表是C++java等语言。

由此可见面向对象是一种更符合我们思想习惯的思想设计模式,可以将复杂的事情简单化,将我们从执行者变成了指挥者。面向对象开发就是不断的创建对象,使用对象,指挥对象做事情。面向对象设计其实就是在管理和维护对象之间的关系。

java语言中,面向对象有三大特性:封装、继承、多态。

封装是指把对象的属性和行为看成一个密不可分的整体,隐蔽对象的功能实现细节。,对外提供公共的访问方式,提高了代码的复用性和安全性。类、方法、接口和被private修饰的成员变量都是封装的体现形式。

继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。这种技术使得复用以前的代码变得容易,能够大大缩短开发周期,降低开发费用。提高了代码的复用性与维护性。

多态按字面的意思就是多种状态。即同一个事物,在不同时刻表现出来的不同状态。在面向对象语言中,接口的多种不同的实现方式即为多态。多态的关键就是父类引用指向子类对象。

类与对象

Java语言是以为单位的,是对某一类事物相关的属性和行为的描述,是抽象的、概念上的定义。对象就是该类事物的具体体现,也称实例(Instance)。类的主要作用就是用来创建对象的。

举例:类和对象的关系图1所示。

Java学习笔记之面向对象1

图1

图1中,汽车设计图就是“类”,由这个图纸设计出来的若干的汽车就是“对象”。由此可见“类”就相当于一个模板,而“对象”就是该模板生产出来的具体实例。

public classPhone {

//成员变量

privateString brand; //品牌

private doublesize; //尺寸

//构造方法【作用:初始化成员变量】

publicPhone(String brand,doublesize){

this.brand = brand;

this.size = size;

}

//成员方法

public voidfunction(){

System.out.println("我是"+brand+"牌"+size+"寸的手机");

System.out.println("我具备打电话,发短信,上网等功能");

}

}

程序说明:

成员变量用来描述对象的静态属性。

构造方法在创建对象的时候,用来给对象中的成员进行数据初始化,如果没有写构造方法时,java虚拟机会给出一个空参数构造方法。当我们自己写了构造方法的时候(不管是有参还是无参),Java虚拟机就不会为我们自动创建空参数构造方法了。

成员方法是对象的动态特征。

对象的创建

public classPhoneTest {

public static voidmain(String[] args) {

//声明并实例化对象:有参构造函数

Phone P1 =newPhone("苹果", 5.0);

P1.function();

//System.out.println("----------------------")

//声明并实例化对象:有参构造函数

Phone P2 =newPhone("华为", 5.5);

//调用myPhone1中的方法

P2.function();

}

}

程序说明:

用new关键字和构造方法Phone()来创建对象,一个类可以创建多个对象。

可以用对象名.方法名的方式来调用对象的方法。

对象名P1和P2是局部变量,在内存的栈区分配,

newPhone("苹果", 5.0)和newPhone("华为", 5.5)是在内存的堆区分配的,是两个不同的对象。

程序输出结果:

我是苹果牌5.0寸的手机

我具备打电话,发短信,上网等功能

我是华为牌5.5寸的手机

我具备打电话,发短信,上网等功能

    main方法说明

public:由于jvm需要调用类的main()方法,所以该方法的访问权限要足够大。

Static:JVM在执行main()方法时不必创建对象,直接用类名.方法名来访问。

void:表示main()方法不需要向java的jvm返回任何值。

main:一个约定俗成的程序主函数入口名称,虽然不是关键字,但是被jvm识别。

String[] args:在scanner类出现以前用于接收键盘输入String类型的字符串数组参数,该数组保存执行java命令时,传递给所运行的类的参数。

该程序执行时在内存中的分配过程,如图2所示。

Java学习笔记之面向对象1

图2

内存分配说明:

代码区code:存放编译后生成的xxx.class文件。

数据区data:存放静态变量和字符串常量。

堆区heap:存放new出来的对象,包括成员变量和方法的地址。

栈区stack:存放要执行的方法地址和局部变量。

本文是面向对象的前期基础学习笔记,如有总结错误,欢迎批评指正!