菜鸟学JAVA(1)——类、继承的关键字

最近因为学Android而学JAVA,遇到的一些问题整理在此处:

1. extends与implements

extends是继承父类,implements是实现interface。JAVA中没有多重继承,但可以实现多个接口。

参考:JAVA 中 extends 与 implements 有啥区别?

接口实现的注意点:

a.实现一个接口就是要实现该接口的所有的方法(抽象类除外)。b.接口中的方法都是抽象的。c.多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。

比如:

class A extends B implements C,D,E

  extends, 可以实现父类,也可以调用父类初始化 this.parent()。而且会覆盖父类定义的变量或者函数。这样的好处是:架构师定义好接口,让工程师实现就可以了。整个项目开发效率和开发成本大大降低。

  implements,实现父类,子类不可以覆盖父类的方法或者变量。即使子类定义与父类相同的变量或者函数,也会被父类取代掉。

延伸问题:为什么JAVA中interface,而C++中没有?

Java中为什么要有接口

abstract关键词能让你在类里创建一个或多个没有定义的方法—你给出接口,但是留一部分没做定义,这部分由它的派生类来实现。而interface关键词则创建了一种完全抽象的,根本不提供实现的类,它不仅是一种是抽象类的极端表现的形式,而且是一种能让你将一个对象上传到多个基类的手段。它提供了类似C++的“多重继承(multiple inheritance)”的功能。

Interface是对abstract关键词的进一步强化,它能让你定义类的形式:方法名,参数列表,返回值,它的方法不用特别声明都是public的。Interface也可以包含数据成员,但是它天生就是static和final的,准确得说,它不是接口的组成部分,而是保存在这个接口的动态存储区。Interface的意思是“所有”“实现”这个接口的类都应该长成这个样子,只要用到了这个interface都知道它有哪些方法可以调用。当你implements一个interface的时候,你必须把这个interface的方法定义成public的,不这样java编译器就会报错。

Java的多重继承,由于interface不带任何实现——也就是说interface和内存无关——因此不会有谁去阻止interface之间的结合。这一点很重要,因为有时你会遇到“x既是a又是b 还是c”这种将多个接口结合在一起的行为,被称为“多重继承”。Java并不强制你必须去继承abstract或“具体”类,但是你只能继承一个非interface的类,所有别的基类元素都必须是interface,你只需把他们放在implments关键词后面,用逗号隔开,你可以实现任意多个interface;也可以把这个类上传到interface。

接口也可以继承,通过继承来扩展interface,加入新的方法,,也可以通过继承将多个接口合并成新的interface接口继承还有其特殊的方面就是可以一次继承多个接口,通常extends只用于类,但是由于一个接口可以由多个interface拼接而成,因此在创建新的接口的时候可以用extends表示多个“基接口”,base Interface之间要用逗号分隔。

2. inner class的作用与用法

TBD

3. JAVA中的继承规则(public/private/protected)与C++的区别

TBD

4. JAVA构造函数与Android onCreate函数的调用顺序

TBD

5. @override与super

TBD

6. abstract与final

TBD

对人性的弱点有清醒的认识,

菜鸟学JAVA(1)——类、继承的关键字

相关文章:

你感兴趣的文章:

标签云: