Java第四次作业

第四章

1、名词解释:构造方法、抽象。
答:构造方法:构造方法是一种特殊的方法,它是一个与类同名的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。
抽象:抽象是把现实世界问题转化为虚拟数据的过程。

2、对象位于内存何处?声明能引用对象的实质是什么?
答:对象可以位于堆内存、也可以位于栈内存。
声明可以获取对象的地址,从而引用对象。

3、对象和基本数据类型作为参数传递时,有什么不同?
答:基本数据类型作为参数传递时传递值,对象是引用传递,传递对象地址。

4、在自定义对象中写finalize方法,看看什么情况下finalize被调用。
答:当垃圾回收器准备好释放对象所占空间时,才会调用finalize方法,并在下一次垃圾回收动作发生时才会真正回收对象内存。

5、对象在什么条件下成为垃圾?什么情况下释放垃圾对象,如何证明一个对象被释放了?
答:当对象没有任何引用的时候就会成为垃圾,并且只能在内存快要耗尽的时候JVM(Java虚拟机)才会触发GC(垃圾回收),即释放垃圾对象。

FightPlane a = new FightPlane();
FightPlane b = a;
System.gc();
System.out.println(b);

看看b的输出是否为NULL,如果是的话,证明对象a被释放了。

6、final修饰符都有什么作用?
答:final修饰属性,则属性为常量;如果修饰方法,则方法称为最终方法,在子类当中不能被覆盖,可防止任何继承类修改此方法,保证了程序的安全性和正确性;可以在Constant类中定义一些静态常量。也可定义对象的属性常量。

7、static修饰的属性和方法有什么特点?
答:用static修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员。它被保存在类的内存区的公共存储单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是相同的数值。访问方式为通过类名加点操作符来访问,也可通过对象引用来访问。
static方法是类方法,但可以被所有对象所访问,引用这个方法时,可以使用对象名做前缀,也可以使用类名做前缀。
static方法内部的代码,只能访问类中的static属性或方法,不能直接访问类中的非static属性或方法(因为那是对象方法),但非static方法(对象方法)可以访问static数据成员。
main方法是特殊的静态方法,是Application程序入口点,必须写成public static void main(String [] args)的形式。

8、Application程序执行时,为什么不能带后缀名?
答:java命令是执行一个类。若写 java xxx.yyy是代表要运行 package xxx 中的class yyy 里面的 main(String[]),所以当你写 java xxx.class 时, 它会以为要找一个叫xxx的package里面的一个叫class的class.

9、
在这里插入图片描述
这是我运行例4.16的结果,上网查询后发现是没有导入包,导入RunPlane包以后才运行成功。
在这里插入图片描述
这个是4.16和4.17打包好的jar。

第五章

1、面向对象的主要特征是什么?
答:封装、继承、多态

2、封装是如何实现的?
答:封装就是利用类将数据和基于数据的操作绑定在一起,数据被保存在抽象数据类型内部,系统只有通过被授权的操作方法才能够访问数据。

3、对象之间如何相互作用?作用的条件是什么?
答:对象之间通过引用相互作用。作用的条件:两个对象的引用属性都相互被赋予了对方对象。

4、protected修饰符有何特点?
答:protected的父类属性成员及方法能被子类所访问。

5、Object都有哪些方法?
答:clone方法、getClass方法、toString方法、finalize方法、equals方法、hashCode方法、wait方法、notify方法、notifyAll方法

6、重载的方法之间一般有什么关系?
答:方法名称相同,参数类型或者个数不同。

7、子类覆盖父类方法需要什么条件?子类中定义与父类同名额方法一定是覆盖吗?
答:子类对父类的同名方法(方法名称相同,参数相同,返回类型相同)重新进行定义,即在子类中定义与父类中已定义的同名而内容不同的方法。子类中定义与父类同名额方法不一定是覆盖,同名的static方法和非static方法不能相互覆盖、方法前有final修饰符,此方法不能在子类方法中进行覆盖。

8、封装、继承与多态在面向对象程序设计中的用途是什么?
答:面向对象程序设计其所以能比面向过程设计有较大影响力,其中一个关键是具有“高内聚,松耦合”的特点,这个特点就是通过封装与组合技术的综合运用来实现的。面向对象应用程序经常以框架和中间件为基础进行设计,应用程序代码和框架代码、中间件代码能够进行融合的主要方式就是采用继承。面向对象程序设计过程中,对于能进行消息处理的接口方法,有时既需要对其功能进行复用,又需要对其进行扩充,重载正好能满足这种要求。

9、设计Src和Dis两个类,Src中有一个被封装的属性,类型为int(要求为非负值),每当通过特定方法更改Src对象中的这个属性后,Dis对象都能得到通知,并向Src发消息获得此属性值。

package Dis;

import Src.Src;

public class Dis {
	public static void main(String args[]) {
		Src fp = new Src();
		fp.show();
		fp.change();
	}
}

package Src;

import Src.Src;

public class Src {
	private int a=0;
	public void show() {
		System.out.print("a = ");
		System.out.println(a);
	}
	public void change() {
		a++;
		System.out.print("a = ");
		System.out.println(a);
	}
}

我把Src和Dis分为两个类,做成了一个自定义包。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值