个人笔记:类与对象

面向对象和面向过程的区别;
面向过程,类似于一个人制作了一块钟表,是一个整体,如果损坏了想要修补,需要整体修改,即其他人由于不了解构造无法修补。并且我想再造一块差不多的,只要不是和原来一模一样的表。就需要重新开始,无法复制。
面向对象则也是制作一块钟表,但是它有一份图纸,是多个部件拼装而成,如果哪里坏了我可以将它分解开,我只需要找到坏的地方的图纸再去更换零件。
类具有两个特点:
1。field:可以称为属性,其实就是信息的集合,如果形容人,那么人的身高长相年龄等多种信息都是这个人的属性。
2。method:方法的使用用例子更加直观

对象的定义格式:
1.声明并实例化对象: 类名称 对象名称 =new 类名称();
2.分布完成:
  1)声明对象:类名称 对象名称 = null;
  2)实例化对象: 对象名称 =new 类名称();//开辟了堆内存
从结果上分布完成和一步完成并没有区别,但是先在栈内存中声明了一个内容bk,但它不指向任何一个位置,他的指向为空;第二步new则开辟一个堆内存空间。(任何情况下只要看见了关键词new,都表示要开辟新的堆内容空间,一旦堆内容开辟,则必然获得相对应的属性内容)
如果使用了一个没有实例化的对象,会发生错误。-NullPointerException//比如你突然喊一声赵四,但是你根本不知道赵四这个人的任何信息,就如同撞鬼一样莫名其妙。


new:开辟内存空间。(引用数据类型想使用就必须使用new来开辟内存空间,这也是和基础数据类型的差别)
当一个对象实例化就可以通过下面的方式来利用对象来操作类的结构:
1.对象.属性:表示操作类中的属性内容;
2.对象.方法:表示调用类中的方法操作;
例:
class Book{//定义一个类
String title;//书的名字
double price;//书的价格
public void getInfo(){//此对象将由方法调用,getInfo 方法名
    System.out.println.("图书名称"+title+"图书价格"+price)//方法体  {}中间的代码
}
}
public class TestDemo{
    public static void main(String[] args){
        Book bk = new Book();//声明并实例化一个对象
        bk.title="Java开发";//操作属性内容,如果不设置值那么会输出默认值;
        bk.price="89.5";//操作属性内容
        bk.getInto();//调用类中的方法

}
}

    

成员变量:


堆和栈;
堆内存:保存每一个对象的属性内容,只有使用关键字new才可以开辟;//若想要确认一个人,就必需知道他的所有属性才能确认。所以属性极其重要
栈内存:类似于挂了几百串钥匙,某个钥匙是一个地址即对象名称,他对应着一个堆内存的房间,里面存放着各种属性内容和方法,如果我想使用房间里面的东西,就必须使用钥匙即声明并实例化后的对象名称来打开它。
例:
Book bk = new Book();
new开辟了一个堆内存,将Book类中存在的属性和方法放入房间里,属性内容没有设置则为默认值。并且同时生成了一个地址,这个地址就是bk。
在声明后修改属性的内容,修改的是存放与堆内存里的属性内容,不会改变类的属性。

总结:
1.类描述的是公共特征,类必须通过对象才能使用。
2.声明对象指的是为开辟堆内存的对象,如果直接使用对象会出现-NullPointerException错误。
  对象可以通过关键字new来进行堆内存空间的开辟,有了堆内存应用的对象才称为实例化对象。
3.堆内存保存的是对象中所有属性的内容,栈内存保存的是堆内存的地址数值;为了容易理解成为保存的是对象名称。
4.垃圾空间指的是是没有任何栈内存指向的堆内存空间,会被GC回收。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值