Java编程语言之面向对象2

面向对象2

1.垃圾对象

什么是垃圾对象? 垃圾对象会被立刻清理吗? 如何清理垃圾?
垃圾对象:堆空间中没有引用所指向的对象;
垃圾对象不一定会被立刻清理;
GC自动清理垃圾;操作:把垃圾对象占用的内存空间标记为可用状态。

2.封装

(1)定义:类中的成员私有化。
(2)作用:保存内部数据,具有一定的安全性。
【练习】Student类和StudentTest类

3.变量访问的就近原则(this关键字)

解决冲突的最好办法就是加上限定;
this关键字
this表示的是当前对象,可以调用类中的属性,方法和构造器;
this.属性,this.方法,this.构造器(必须放构造方法中的首行);
this用在方法中表示当前方法的调用者的对象;
this用在构造器中表示正在创建的对象;
this(…)
作用:调用其他重载的构造器;
要求:此调用必须在构造方法中的第一行语句;
效果:对其他构造器的调用一定是早于本构造方法中的特有代码;
如果有this(…)调用,一定会是有一个构造器是没有this(…)的,否则会形成无限递归。

4.成员变量和成员方法是什么?作用是什么?

5.变量的分类

(1)局部变量:声明在方法中的变量
形参(方法签名中定义的变量),方法局部变量(在方法内定义),代码块变量(在代码块内定义)。
(2)成员变量:声明在类中,方法外的变量
实例变量(不以static修饰),类变量(以static修饰)。

6.成员变量和局部变量的区别

成员变量定义在类中,在整个类中都可以被访问。
成员变量分为类成员变量和实例成员变量,实例变量存在于对象所在堆内存中。
成员变量有默认初始化值。
成员变量的权限修饰符可以根据需要,选择任意一个
局部变量只定义在局部范围内,如:方法内,代码块内等。
局部变量存在于栈内存中。
作用的范围结束,变量空间会自动释放。
局部变量没有默认初始化值,每次必须显式初始化。
局部变量声明时不指定权限修饰符

7.对象的生命周期

对象的生命周期和局部变量的生命周期哪一个更长?
不一定哪一个更长,如果局部变量定义在main方法中,直至程序结束,局部变量的生命周期才算结束。如果对象定义在

8.对象的默认值

在这里插入图片描述

9.匿名对象

如:new Person().shout(),直接调用这个对象的方法,一次使用,用完就扔掉成为垃圾。

10.类成员之三:构造器(构造方法)

(1)构造器的特征
①方法名和类名一致(唯一允许使用首字母大写的方法)
②没有返回值声明,连void也没有
③不可以被abstract, static, native, synchronized, final修饰
④不可以像普通方法一样随意调用,只能在创建对象时调用仅有的一次
(2)构造器的作用:在创建对象时给对象进行初始化
(3)缺省构造器
如果类中没有提供任何构造器,编译器会自动添加一个构造器,这个构造器称为缺省构造器;
缺省构造器的特点:修饰符和所属类一致,无参数,方法中没有语句。
【注意】如果在类中提供了构造器,编译器就不添加缺省构造器了。
构造器重载,参数列表必须不同。
(4)构造器可以重载,创建者想用哪一个就用哪一个即可。
(5)构造器重载的好处:方便调用者使用,使对象的创建更加灵活。
(6)在Java语言中,每个类中至少有一个构造器。
【练习】Student类和StudentTest类

11.反编译

如:javap Teacher,只能反编译查看一些公共的方法(包括构造方法),不能反编译查看属性。

12.java程序中,没有二义性---->必须清晰

13.对象的传递

(1)对象的传递本质上传递的是地址值;
(2)修改局部变量引用本身,对传入的对象没有影响;
(3)通过引用修改对象的实体,对传入的对象有影响。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值