抽象类_接口

来源:互联网 发布:全国软件专业人才证书 编辑:程序博客网 时间:2024/04/27 12:08
一,抽象类:
1,抽象类的产生:
比如犬类事务,都具备吼叫的功能,但是叫声却不一样,叫声则是由具体的子类来赋予的,那么这时功能不具体,但是却相似的功能,需要在父类中标示出来则通过java中关键字:abstact(抽象)。abstract void 吼叫();//抽象函数,需要abstract修饰,并用分号结束。定义了抽象函数的类也必须用abstract修饰。被abstract修饰的则称为抽象类!

抽象类:
      描述事物是,没有足够的信息描述一个事物,功能不确定,则可以使用抽象类。此事务则就是抽象事务。面向对象的概念中,所有的对象都是通过来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类.

2,抽象类的特点:

1.抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在被abstract修饰的类中。
           2.抽象类不可以创建实例,原因:调用抽象方法没有意义。
   
      3.只有覆盖了抽象类中所有的抽象方法后,其子类才可以实例化。否则该子类还是一个抽象类。
   
     
4.之所以继承,更多的是在思想,是面对共性类型操作才会更简单。

代码实例:
   //abstract例子:abstract class Employee{private String name;private String id;private double pay;/**构造一个员工对象,一初始化就具备着三个属性。*/public Employee(String name,String id,double pay){this.name = name;this.id = id;this.pay = pay;}/**工作行为。*/public abstract void work();}//具体的子类:程序员。class Programmer extends Employee{public Programmer(String name,String id,double pay){super(name,id,pay);}public void work(){System.out.println("code....");}}//具体的子类:经理。class Manager extends Employee{//特有属性。private double bonus;public Manager(String name,String id,double pay,double bonus){super(name,id,pay);this.bonus = bonus;}public void work(){System.out.println("manage");}}

,接口:

1,接口的由来:
抽象类中可以定义抽象方法的当一个抽象类中的方法全是抽象的,可以通过另一种特殊的形式来体现。可以将该类定义为接口。 接口里的方法只能是抽象的。

2,接口中成员的定义格式:
1,定义变量:但是变量必须有固定的修饰符 public static final所以接口中的变量也称之为常量。(可以略,编译器会自动加上)。
      2,定义方法:方法也有固定的修饰符:public abstract 接口里的成员都是公共的。(可以领略,编译器会自动加上)。

3,接口的特点:
1.接口不可以创建对象,
    2.子类必须要覆盖掉接口中的所有的抽象方法后,子类才可以实例化。否则子类也会是一个抽象类。
接口的子类:子类与子类的关系是继承,类与接口之间的关系是实现,通过关键字:implements

class DemoImpl implements  demo{//重写接口中的所有方法:code....}

4,接口最重要的体现:
 多继承弊端:当多个父类有相同功能时,子类调用会产生不确定性。
    解决多继承的弊端,将多继承这种机制在java中通过多实现完成。class C
implements A,B{}//多实现,利于多态化。
    原因在于:多继承父类中的功能有主体,而导致调用运行时,不确定哪个主体内容 ,多实现接口中没有方法体,需要有子类来明确。
    
如果子类想要继续扩展其他类中的功能呢?这是可通过实现接口来完成。
 


5,接口的好处:

 1,接口的出现对功能实现了扩展,2,接口的出现定义了规则,3,接口的出现降低了耦合性(解耦)。说明有两方,一方在使用规则(如笔记本电脑),一方在实现这个规则(笔记本的外围设备)。接口的出现避免了单继承的局限性,父类中定义的事物的基本功能,接口中定义的事物的扩展功能。
2 接口可支持多继承,指的是接口与接口之间,支持多继承!,


,细节:

1,没有抽象方法的抽象类的由来:
    为了使用接口中的部分方法,而覆盖了全部的方法,而且每一个子类都要这么做,复用性差。   解决:将这些不用的方法单独抽取到一个独立的类中,让这个类去实现接口,并覆盖接口中的所有方法。但这个类不知道具体的实现内容,所以只能为了后期的子类创建对象方便而进行空实现,而这时,这个类创建就像就没有意义,因为其主体内没有方法内容,这个类创建对象就不需要,则可以直接将其抽象化。这就是没有抽象方法的抽象类的存在意义。 
2,接口与抽象类的区别:
接口与抽象类是有很大区别,抽象类可以通过接口定义但接口比抽象类具有更多功能。
1,抽象类是描述事物的基本功能,可以定义非抽象的方法,
接口中定义的只能是抽象方法。
2,类与类之间是继承关系 is a关系。
类与接口之间是实现关系 like a关系。接口只可以定义static final成员变量
3,抽象类里面可以有非抽象方法,但接口里只能有抽象方法 。
4 ,接口(interface)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个有程序体。
















1 0
原创粉丝点击