十三、java继承(下)抽象、接口

1.静态是不能被继承与覆盖的。

2.抽象类:abstract
用来描述一个事物却无足够信息则称为抽象事物。

abstract class 犬科
{
  abstract /*抽象*/ void 吼叫();//后面无{}
}

3.面对抽象的事物,虽然不具体,但是可以简单化。

特点:
a.抽象方法一定定义在抽象类中,都需要abstract
b.抽象类不能实例化,不能用new创建对象
c.只有子类覆盖了所有的抽象方法,子类就可以创建对象
d.如果子类没有覆盖所有方法,就没法实例化,还是一个抽象类。

抽象类也是不断向上抽取而来,抽取了方法的申明而不确定具体的方法内容,让不同的子类来确定具体的方法内容。

4.问题:抽象类中有构造函数吗?

答:有,抽象类的构造函数虽然不能给抽象类对象实例化,因为抽象类不能创建对象,但抽象类有子类,它的构造函数可以子类来实例化。

5.抽象类和一般类的异同?

相同:都是用来描述事务,都可以进行属性和行为的描述。
不同:抽象类描述事物的信息不具体,一般类描述的事务的信息具体。
代码的不同:抽象类中可以定义抽象方法,一般类不行。抽象类不可以实例化,一般类可以。

6.抽象类一定是父类吗?
是的,必须子类覆盖方法后,才可以实例化,才可以使用。

7.抽象类可以不定义抽象方法,仅仅是让该类不能创建的对象

8.抽象类关键字abstract不能与哪些关键字共存?

final ;final方法不能被覆盖
private;
static;


9.接口:interface
抽象类中所有方法都是抽象的,可用另一种形式的接口来表示
定义接口:

interface Inter
{
   (public static final) int NUM=4;
   public  abstract  void show( );
}

接口中的成员和class定义的不同之处:
接口中常见的成员有两种: 1,全局变量 2.抽象方法
而且都有固定的修饰符,共性:成员都是public修饰的

10.接口的特点:

a.不可实例化。
b.需要覆盖接口所有抽象方法的子类才可以实例化,否则子类还是一个抽象类。
c.接口是用来被实现的。

11.类与接口之间是实现关系

class Demo implements/*实现*/ Inter
{
  public void show( ){ }//必须覆盖
}

12 .接口解决的问题?
多继承 好处:可以让子类具备更多功能。 弊端:调用的不确定性。
java中不直接支持多继承,而是改良通过接口来解决,将多继承转换成了多实现。
class SubInter implement InterA,InterB//多实现{ }

13.好处:接口的好处在于一个类继承一个类的同时,还可以实现多个接口,避免了单继承的局限性。
集成式味蕾获取体系的基本功能,想要扩展功能可以通过接口来完成。

类与类之间 -继承关系:is a;
类与接口之间 -实现关系:like a;
接口与接口之间关系:是继承关系,接口可以支持多继承。

15.问题:只需要接口的部分功能怎么办呢?

为了方便创建Inter接口中的子类对象,可以用一个类先把接口中的方法都空实现,该类创建对象没有意义,故可以使其抽象。这就是没有抽象方法的抽象类。

16.接口的思想:

(笔记本电脑的nsb接口)
a.接口的出现扩展了功能(可以一直扩展)
b.接口其实就是暴露出来的规则。
c.接口的出现降低了耦合性。接口——解耦
接口的出现:一方在使用接口,一方在实现接口。

17.抽象类与接口:
缉毒犬是犬中的一种, is a关系。
犬用于描述所有功能犬的基本功能,用class 父类,所以犬不适合定义成接口。
而具备缉毒功能的有很多,缉毒需要抽取,不能定义成类因为类不能多继承,所以得用接口,
Class 缉毒犬 extends 犬 implements 缉毒

18.总结:

类用于描述的是事物的共性基本功能。
接口用于定义的是事务的额外功能。

接口一是为了多个事物可以共用这个额外功能。
各种猪的共性用类,缉毒猪和缉毒犬的共性缉毒用接口。

19.抽象与接口如何区别?

a.类与类的继承关系是is a,类与接口是like a(缉毒猪是猪而不是缉毒)
b.类中定义的抽象和非抽象方法子类可以直接使用或者覆盖使用;接口中都是抽象方法,必须全实现才可以用。

你可能感兴趣的:(十三、java继承(下)抽象、接口)