关于类的重用的一些问题

1.      类的重用的意义?

类的重用从代码重用的角度看,一方面有利于维护代码结构,减少冗余,是代码结构更加清晰,提高效率。也有利于程序的可扩展性以及灵活性。

2.      类重用的两种实现方式?

方式一:继承

方式二:组合, 一个类通过将其他类的对象加入自己的类中,从而使用其资源。这里的组合是代码层面的实现方式类与类之间的几种关系:依赖,聚合,关联,组合,都有一个类用到另一个类的特点,它们的区别在于依赖程度不同,可以是临时的或者永久的,也可是局部与整体的关系,这几种关系仅仅是语义上的不同,在代码层面都是用“组合”实现的。

3.      Java类的继承是如何实现的?

继承的出发点是若干类存在相似点,共享相同的方法和属性,这样一来,相似处能够提取出来重用,不必重复编写代码。继承是在一个父类的基础上扩展新的功能实现的,父类定义了公共的属性和方法,而其子类自动拥有了父类的所有功能,在此基础上,又可以增添自己特有的新的属性和方法进行扩展。Object是所有类的祖先,所以Java中创建一个新类时,总是在继承。Java只支持单继承,每个子类只能有一个直接付磊,不允许有两个以上的父类,这使得Java的继承方式很直接,代码简洁,结构清晰。

4.      配合不同的访问控制,有几种常见的继承场景?

1.     继承数据成员,如果数据成员的权限是protected,它的访问权限是本类和子类,在不同的包里也能访问,子类的方法可以访问父类的protected,但是子类的对象则不可以,因为子类的对象不属于子类。

2.     继承普通方法,如toString,为了方便继承,权限是public

3.     继承构造方法,必须将super语句放在第一句

4.     抽象类,抽象方法

子类可以通过关键字super继承父类的数据成员,普通方法及构造方法。也可以重写override与父类的方法同名的方法。

5.      解释子类和父类的关系?

父类和子类的继承关系是is-a的关系

派生类的对象可以赋给基类,反之不行。

基类的指针可以指向派生类,反之不行

基类的引用可以初始化为派生类的对象,反之不行

6.      什么叫抽象类和抽象方法?

抽象方法:在父类中声明,在子类中实现的方法称为抽象方法,关键字abstract

抽象类:含有抽象方法的父类称为抽象类

7.      访问控制修饰符如何影响子类对父类中的数据和方法的继承?

Public:对所有类可见

Protected:对同一包中的类和子类可见

Private:对类本身可见

Default:对同一包中的类可见

继承的时候,子类从父类继承一些东西,它们的权限仍然是不变的,子类是具有这些特性,但是你能不能使用子类的这些特性,取决于这些特性的权限修饰符和子类和父类是否在一个包内

8.      什么是方法覆盖(Override)?

子类在继承父类的过程中,不想原封不动的继承父类的方法,而是想做一定的修改,这就需要采用方法的重写。方法的重写又称方法覆盖。

9.      有继承关系时的构造方法遵循的原则?

在继承关系中,如果子类构造方法中没有明确指明调用父类的构造方法,那么系统会自动调用父类的默认构造方法。如果子类想显式的调用父类的构造方法,那么在子类的构造方法的第一行用关键字super()调用父类的有参或无参的构造方法。

10.   什么是终结类和终结方法?

终结类:如final class A {…}这样的带有final字符的类是终结类,其特点是不可以被继承

终结方法:如final void B(){…}这样的带有final字符的方法是终结方法,终结方法在子类中不可以被重写

11.   组合方式的代码重用如何实现?

将组合类的对象作为数据成员加入到当前类中作为数据成员,而当前类的代码无需做任何修改。组合是has-a或is part of的包含关系,简单理解为一个类里包含了另一个类的对象。

12.   解释关键字:extends、super、final、abstract的含义?

1.     extends:用在子类继承父类时

2.     super:1.用super操作被隐藏的成员变量和方法。2.用super调用父类的构造方法

3.     final:可以将类或方法变成终结类,终结方法,使其不能被继承或重写

13.   谈谈你对代码重用在软件开发中的应用的理解和认识。

代码重用的重要性主要体现在两个方面,一方面,有利于维护代码结构,代码结构需要有效管理,否则程序会变得十分臃肿,开发逻辑混乱,后期难以维护。代码重用可以减少冗余,使代码结构更加清晰,提高效率。另一方面,有利于程序的可扩展性及灵活性,代码重用可以使一些比较实用的类在其他新类中或项目中重新发挥作用,而不必再从头开始编写代码。

猜你喜欢

转载自blog.csdn.net/MaxineZhou/article/details/80548768
今日推荐