JAVASE 学习笔记(面向对象-------类与对象)

本文详细解读了面向对象编程(OOP)的核心理念,包括类与对象的创建、抽象与封装、构造器的作用,以及值传递与引用传递的区别。通过实例演示,讲解了静态方法、实例方法和参数传递。深入探讨了类、对象内存分配与调用机制,适合理解OO设计的开发者阅读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面向对象编程(OOP)

面向过程是一个线性的思维方法,按顺序解决问题。

而面向对象是分类的思维模式,把打的问题分成几个类,然后再用面向过程的思想对这些分类进行单独思考。适用于处理复杂问题及需要多人处理的问题。

总结:

 面向对象编程(Object-Oriented Programming ,OOP)

本质:以类的形式组织代码,以对象的形式封装数据。

抽象:把共同点抽取出来。例如学生对象,可以抽取其学号等来表示。

 类是对象的抽象,在编程时先要写类,然后再在main函数中进行类的调用(用new来新建一个对象)

带异常的方法:

return 和 break的区别:

 

方法的调用:

静态方法:方法中带有static ,在其他类中调用时可以直接用  类名.方法名  进行调用。

非静态方法:方法中不带有static ,在其他类中调用时要用new方法实体化这个类(即创建一个对象) 

在静态方法中调用非静态方法出现异常是因为:静态方法和类一起加载(比较早),而非静态方法在实例化之后才存在(较晚)。

方法中的参数为形式参数,而实例化对象后的调用时的参数为实际参数

值传递和引用传递:

什么是局部变量、全局变量、静态变量 ???  

全局:具有文件作用域的变量
静态:具有静态存储期或内部链接属性
局部:具有函数或块作用域的变量

基本数据类型和局部变量存放在栈中,用完就消失。

静态变量放在方法区;实例(成员)变量放在堆中;局部变量(参数)放在栈中。

值传递:java为值传递

解析:方法change中的a为形式参数,而main函数中的a是实际参数。

形参改变不能带给实参(因为这两个a是两个不同的东西,形参a为局部变量,出了change方法会在栈中被清除,不能带出给实参) 要注意的是,方法中return a是返回了a的值 ——>10,而不是返

回了形参a。只有拿实参a去接收方法返回的值,才能改变实参a的值。

结果:

 

引用传递:实例指向对象,但是本质还是值传递

在demo2类中写了一个change方法,参数是一个Person类的对象,修改该对象的name属性为"tzy"。     对象用的是引用传递,main方法中a为引用变量名,其指向的是a在堆中的地址。调用change方法时改变的是a在堆中的name属性,堆中的改变在出了方法时不会被清除,所以name改变了。

创建对象时的内存分析:

方法区属于堆,里面存了各个类(引用的模板)和静态方法区以及静态变量,在加载时是最先加载的(所以类和静态方法可以被其他对象调用)。栈里面存放的是方法和引用变量名(栈中的引用变量名 指向的是堆中实例的地址)。当new了一个实例时,会从方法区引用类,然后在对象中创建一个实例,栈中的引用变量名 引用的是堆里面的实例。

类和对象的创建:

类的创建:

一个类里面会包含属性(字段)和方法

PS:因为类是抽象的,在创建类的时候,属性不能够在类的创建时赋值(但是类在创建一个对象时会进行默认初始化和对构造器的调用         例如String类型默认为null,int类型默认为0)。而对象是类的一个实体,在类实例化后产生一个具体事例后,可以对事例进行赋值。

this.name的中this指的是类被实例化后,当前的实例。

对象的创建:

类是用来组织代码的!而每个具体的对象是对数据的封装!

构造器:

作用:

1.用于初始化值(在实例化的时候 给属性附一个初始值)

2.使用new关键字的时候,本质是在调用构造器

特点:

1.必须和类名相同

2.不能反回值

PS:1.一旦定义了有参构造,无参就必须显示定义

       2. this.xxx后面xxx的内容为类中的,而不是形参

一个空的类中,什么都不写,他也会有一个方法。

如下Person类中,会隐式定义一个Person()方法

但是一旦定义了有参构造,无参就必须显示定义

类与对象总结:

除了基本类型(8个),其他的都算引用类型。  对象是通过引用来操作的:栈--->堆(栈中的引用变量指向的是对象的地址)

         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值