Java学习笔记(五)——面向对象(一)

面向对象(一)

前言

在思考面向对象的时候可以类比表格结构,类就相当于表格,类的属性相当于表格的属性,类的方法相当于表格所有内容都有的动作,对象相当于表格中的每一行内容,即每一个元组。世间万物都包含静态属性和动态动作,即都可以抽象成类用面向对象的方法处理。

一、面向过程和面向对象的区别

面向过程:执行者思维。首先思考怎么按步骤实现,并将步骤对应成方法,一步一步实现。适合简单任务,不需要过多协作的情况下,重点关注如何执行。比如说,在思考如何开车时,我们会列出实现步骤:①点火②挂挡③踩油门。
面向对象:设计者思维。首先思考怎么设计事物。比如说,在思考如何造车的时候,显然不能按步骤一步一步实现,因为造车太复杂,需要很多协作才能完成。我们会首先会思考一辆车由哪些部件组成,再思考每个部件的制造步骤,最终完成协作进行组装造出一辆汽车。此时,虽然说时面向对象思维,但是具体到某一个环节的实现,仍然是有步骤的,离不开面向过程思维。
总结——

  • 面向对象帮助我们从宏观上把握、从整体上分析整个系统,但是具体到实现部分的微观操作(方法)仍然需要面向过程的思路去处理。
  • 千万不要把二者对立起来,二者相辅相成,面向对象离不开面向过程。
  • 二者都是解决问题的思维方式,都是代码组织的方式。
  • 面向过程更适合解决简单问题,面向对象更适合解决复杂、需要协作的问题。

二、对象和类

1.类的定义

首先,类(class)是对具体事物的抽象,可以看作是一个模板。对象(object)也叫实例(instance),类的对象和类的实例是一个意思。类的定义如下:

//每一个源文件必须有且只有一个public class并且类名和文件名保持一致
//其他类可以写在同一个文件里,也可以单独创建java文件去写
public class Car(){}
class Tyer(){}
class Engine(){}
class Seat(){}

类的基本机构如下:

public class Stu(){
	//属性(field)
	int id;
	String name;
	int age;

	//方法(method)
	void study(){
		System.out.println("I am learning!");
	}

	//构造方法(构造器constructor)
	Stu(){}//方法名和类名相同,不带修饰符

	//关于main()方法
	public static void main(String[] args){...}
	//main方法是程序的入口,Java中的所有方法必须放在类里面,形式上属于某个类,但是意义上是独立的
}

2.属性和方法

/**
*属性定义格式:
*[修饰符] 属性类型 属性名 = [默认值]
*若在定义属性时不赋初值,系统会有默认值:
*整形:0
*浮点型:0.0
*字符型:'/u0000'(数字0)
*布尔型:false
*所有引用类型:null
*/

/*
方法用来定义该类或该类实例的行为特征和功能实现,类似于面向过程的函数。
方法定义的格式:
[修饰符] 方法返回值类型 方法名(参数列表){...}
*/

3.内存分析

在用类实例化一个对象的时候,系统自动分配一个内存空间并以该对象名命名,该对象的内存空间中实际上存放的是一个地址,该地址指向系统分配的另一空间——该空间存放的是该对象包含的所有属性和方法。
在这里插入图片描述

构造方法

构造方法也叫构造器,用于对象的初始化,是一个创建对象是被自动调用的特殊方法。(注意:构造器不用于对象的创建,构造器在调用的时候,对象已经创建好了,构造器只是对它进行初始化)。Java通过new关键字来调用构造器,从而返回该类的实例。

//声明格式
[修饰符] 类名(形参列表){...}

构造器的4个要点:

  • 通过new关键字调用
  • 构造器虽然有返回值,但不能定义返回值类型(返回值类型肯定是本类),不能在构造器里使用return返回某个值
  • 如果没有定义构造器,编译器会自动定义一个无参的构造函数。如果已经定义,则不会自动添加
  • 构造方法名称必须和类名保持一致

内存分析
可参考尚学堂视频:https://www.bilibili.com/video/BV1oy4y1H7R6?p=77

关于Java中的析构函数
可参考博文:https://blog.csdn.net/qq_28081081/article/details/80627715

构造方法的重载
通过在类里面定义参数列表不同的构造方法,便于在创建对象的时候初始化对象。
注意:如果手动定义有参的构造器,系统不会自动添加无参的构造函数。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值