前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础-day10-基础题-继承;抽象类

Java基础-day10-基础题-继承;抽象类

作者头像
Java帮帮
发布2018-03-19 17:50:35
8430
发布2018-03-19 17:50:35
举报
Java基础-day10-基础题-继承&抽象类

什么是继承?继承有什么好处?

继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。

好处:

(1)继承关系是传递的。若类C继承类B,类B继承类A(多层继承),则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法。继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法。继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。

(2)继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。

(3)继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。

(4)继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。

(5)提供多重继承机制。从理论上说,一个类可以是多个一般类的特殊类,它可以从多个一般类中继承属性与方法,这便是多重继承。Java出于安全性和可靠性的考虑,仅支持单重继承,而通过使用接口机制来实现多重继承。

子类可以访问父类的私有成员变量么?

1.关于私有成员变量

无论父类中的成员变量是pirvate、public、还是其它类型的,子类都会拥有(继承)父类中的这些成员变量。但是父类中的私有成员变量,无法在子类中直接访问,可以通过从父类中继承得到的protected、public方法(如getter、setter方法)来访问。

个人认为这更好的提现了JAVA特性中的封装,而且符合软件工程的设计思想:低耦合

2. 关于静态成员变量

无论父类中的成员变量是静态的、还是非静态的,子类都会拥有父类中的这些成员变量。

3. 关于被子类覆盖的成员变量

无论父类中的成员变量是否被子类覆盖,子类都会拥有父类中的这些成员变量。

继承后没有方法重写可以么?如果不可以说出原因,如果可以,是否有意义,为什么。

抽象类中的非抽象方法不用重写,其他必须重写,接口的方法必须重写;

接口和抽象类中只有方法名,没有定义的,如果你不定义 也就是空方法,接口就是为了弥补java不能多重继承,接口针对的是对象而不是实现。实现的部分可以交由对象去实现。这就是java中的多态啊。

方法重写的注意事项有哪些?

方法重写与方法重载不同,方法的重载是方法的参数个数或种类或顺序不同,方法名相同。

方法重写是要注意权限的问题,子类中的权限不能小于父类的权限,当父类的权限为private时,子类无法继承。也就无法产生所谓的重写。(修饰符高低:private < 默认修饰符 < public)

抽象方法是什么,其格式是什么,有什么用?

java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。

格式:

abstract在访问权限后,返回值类型前修饰方法,方法没有方法体:

public abstract 返回值类型 方法名(参数);

作用:

抽象方法的作用是,你在此类里不必实现它,只是一个虚方法,所有的实现可以到继承此类的子类里面去做.你也可以理解为,抽象方法就是用来被重载的方法.你可以在子类里对它进行重载,也可以不进行重载.举个例就象定义了一个电器类,其中一个虚方法是显示图象.你用电视机继承电器类的时候就把显示图象的方法实现为电视机的显示方法,用mp4继承电器类时就把这个虚方法实现为mp4自己的显示方法.如果是用收音机类去继承电器,你就可以不用实现这个方法.

抽象类存在的意义是什么?

抽象类往往用来表示对问题领域进行分析、设计中得出的抽象概念。其存在的意义在于其设计性、复用性与扩展性。

抽象类方便了具体类的定义。

抽象类仅是对功能和属性的声明,表示这类事物应该具备这些内容。限制程序员不能直接创建该抽象类对象,必须定义其子类才可使用。如我们可以听一只狼的叫声,也可以听一只狗的叫声,但是如果我们听一只犬科的叫声就显然不合适了。

构造器Constructor是否可被override?

构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload。

下面选项正确的是:

A.子类继承父类的所有属性和方法

B.子类可以继承父类的私有的属性和方法

C子类可以继承父类的公有的属性和方法

D.创建子类对象时,父类的构造方法都要被执行

答案:C

下面选项错误的是:

A.一个子类可有多个父类

B.父类派生出子类

C.子类继承父类

D.子类只能有一个父类

答案:A

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java帮帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是继承?继承有什么好处?
  • 抽象方法是什么,其格式是什么,有什么用?
  • 构造器Constructor是否可被override?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档