您的位置:首页 > 其它

面向对象--继承、接口

2015-03-12 09:57 225 查看
1)继承

好处:提高代码的复用性;使类与类之间产生关系密切,有了关系才有多态的特点。

关键字:extends

注意:java中只支持单继承(只继承一个父类),不支持多个继承(同时继承多个父类),但是java支持多层继承(A继承B,B继承C,由此可以看出来,A有B的特点也有C的特点),多层继承时在创建对象时要创建最子类的对象,因为最子类的对象有更多的功能或者说父类对象有可能不能创建对象。

知识点:如果子父类中有同名的变量,在访问子类变量时,this.代表的是访问本类变量,super.代表的是访问父类变量。

如果子父类中有同名的函数时,子类会覆盖掉父类的函数,这种特性叫做重写。

注意:1、子类覆盖父类时,要保证子类的权限大于等于父类才可行。2、静态只能覆盖静态。

子类的实例化过程:

1、子类的所有构造函数,默认都会访问父类中空参数的构造函数。因为子类每一个构造函数内第一行都有一个隐式super();

2、当父类中没有空参数的构造函数时,子类必须手动通过super语句来访问父类中的构造函数。

3、子类中构造函数的第一行也可以通过this()语句来访问本类中的构造函数。

2)final

final可以修饰类、函数、变量。

被final修饰过的类不可以被继承。被final修饰过的函数不可以被复写。被final修饰过的变量是一个常量,只能逢符值一次。

3)abstract 抽象

1、抽象方法一定在抽象类中

2、抽象方法和抽象类都必须被abstract关键字修饰

3、抽象类不可以用new创建对象,因为调用抽象方法没意义。

4、抽象类中的方法要被调用,必须由子类重写抽象类中的所有方法,如果只重写了部分,这个子类还是抽象类,是不能用的。

abstract class AbstractDemo

{

abstract void speak ();

}

class Abs extends AbstractDemo

{

void speak ()

{

System.out.print("此处写具体的方法,与抽象类中的方法不一样的地方");

}

}

4)模板方法设计模式

在定义功能时,有一部分是确定的,有一部分是不确定的,而确定的部分在使用不确定的部分,那么这个时候 就将不确定的部分显露出去,让子类来完成。

5)接口 interface

interface iner

{

public abstract void show();

}

接口与类相似,但接口内的方法都是抽象的,如果有变量,也必须是final修饰的常量。

特点:

1、接口中常见的成员:常量、抽象方法

2、接口中的成员都有固定的修饰符:

常量:public static final 

抽象方法:public abstract 

接口是不能建立对象的,因为有抽象方法,只能由子类来实现,用关键字:implements 来实现,就可以建立对象了。

知识点:接口可以多实现,并且还可以继承一下。

class A extends E implements B,C {}

interface A extends E implements B,C {}

接口的特点:

功能的扩展性。  

类与接口的区别:类是描述一类事务的共有属性,而接口是个别的属性。也可以说类是系统,是描述一种事物间的关系,而接口不属于系统内部的特性,接口更多的是属于系统外的属性。比如说动物类下有狗科类,狗看家(假设的是所有狗的属性的话)是这个狗类的共有属性,捉耗子就是狗这个系统外的属性。因为只有个别的狗会捉耗子。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐