抽象类_接口
来源:互联网 发布:全国软件专业人才证书 编辑:程序博客网 时间:2024/04/27 12:08
一,抽象类:
1,抽象类的产生:
比如犬类事务,都具备吼叫的功能,但是叫声却不一样,叫声则是由具体的子类来赋予的,那么这时功能不具体,但是却相似的功能,需要在父类中标示出来,则通过java中关键字:abstact(抽象)。abstract void 吼叫();//抽象函数,需要abstract修饰,并用分号结束。定义了抽象函数的类也必须用abstract修饰。被abstract修饰的则称为抽象类!
抽象类:
描述事物是,没有足够的信息描述一个事物,功能不确定,则可以使用抽象类。此事务则就是抽象事务。在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类.
描述事物是,没有足够的信息描述一个事物,功能不确定,则可以使用抽象类。此事务则就是抽象事务。在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类.
2,抽象类的特点:
1.抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在被abstract修饰的类中。
2.抽象类不可以创建实例,原因:调用抽象方法没有意义。
3.只有覆盖了抽象类中所有的抽象方法后,其子类才可以实例化。否则该子类还是一个抽象类。
4.之所以继承,更多的是在思想,是面对共性类型操作才会更简单。
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 接口里的成员都是公共的。(可以领略,编译器会自动加上)。
2,定义方法:方法也有固定的修饰符:public abstract 接口里的成员都是公共的。(可以领略,编译器会自动加上)。
3,接口的特点:
1.接口不可以创建对象,
2.子类必须要覆盖掉接口中的所有的抽象方法后,子类才可以实例化。否则子类也会是一个抽象类。
2.子类必须要覆盖掉接口中的所有的抽象方法后,子类才可以实例化。否则子类也会是一个抽象类。
接口的子类:子类与子类的关系是继承,类与接口之间的关系是实现,通过关键字:implements
class DemoImpl implements demo{//重写接口中的所有方法:code....}
多继承弊端:当多个父类有相同功能时,子类调用会产生不确定性。
解决多继承的弊端,将多继承这种机制在java中通过多实现完成。class Cimplements A,B{}//多实现,利于多态化。
原因在于:多继承父类中的功能有主体,而导致调用运行时,不确定哪个主体内容 ,多实现接口中没有方法体,需要有子类来明确。
如果子类想要继续扩展其他类中的功能呢?这是可通过实现接口来完成。
解决多继承的弊端,将多继承这种机制在java中通过多实现完成。class Cimplements A,B{}//多实现,利于多态化。
原因在于:多继承父类中的功能有主体,而导致调用运行时,不确定哪个主体内容 ,多实现接口中没有方法体,需要有子类来明确。
如果子类想要继续扩展其他类中的功能呢?这是可通过实现接口来完成。
5,接口的好处:
1,接口的出现对功能实现了扩展,2,接口的出现定义了规则,3,接口的出现降低了耦合性(解耦)。说明有两方,一方在使用规则(如笔记本电脑),一方在实现这个规则(笔记本的外围设备)。接口的出现避免了单继承的局限性,父类中定义的事物的基本功能,接口中定义的事物的扩展功能。
2 , 接口可支持多继承,指的是接口与接口之间,支持多继承!,
2 , 接口可支持多继承,指的是接口与接口之间,支持多继承!,
三,细节:
1,没有抽象方法的抽象类的由来:
为了使用接口中的部分方法,而覆盖了全部的方法,而且每一个子类都要这么做,复用性差。 解决:将这些不用的方法单独抽取到一个独立的类中,让这个类去实现接口,并覆盖接口中的所有方法。但这个类不知道具体的实现内容,所以只能为了后期的子类创建对象方便而进行空实现,而这时,这个类创建就像就没有意义,因为其主体内没有方法内容,这个类创建对象就不需要,则可以直接将其抽象化。这就是没有抽象方法的抽象类的存在意义。
为了使用接口中的部分方法,而覆盖了全部的方法,而且每一个子类都要这么做,复用性差。 解决:将这些不用的方法单独抽取到一个独立的类中,让这个类去实现接口,并覆盖接口中的所有方法。但这个类不知道具体的实现内容,所以只能为了后期的子类创建对象方便而进行空实现,而这时,这个类创建就像就没有意义,因为其主体内没有方法内容,这个类创建对象就不需要,则可以直接将其抽象化。这就是没有抽象方法的抽象类的存在意义。
2,接口与抽象类的区别:
接口与抽象类是有很大区别,抽象类可以通过接口定义但接口比抽象类具有更多功能。
1,抽象类是描述事物的基本功能,可以定义非抽象的方法,
接口中定义的只能是抽象方法。
2,类与类之间是继承关系 is a关系。
类与接口之间是实现关系 like a关系。接口只可以定义static final成员变量。
1,抽象类是描述事物的基本功能,可以定义非抽象的方法,
接口中定义的只能是抽象方法。
2,类与类之间是继承关系 is a关系。
类与接口之间是实现关系 like a关系。接口只可以定义static final成员变量。
3,抽象类里面可以有非抽象方法,但接口里只能有抽象方法 。
4 ,接口(interface)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个有程序体。
1 0
- 抽象类_接口
- 笔试_接口抽象类
- 面向对象_多态_抽象类_接口
- 类抽象类接口_练习
- 黑马程序员_抽象类和接口
- 黑马程序员_抽象类合接口
- 黑马程序员_抽象类和接口
- 面向对象_继承、抽象类、接口
- 黑马程序员_抽象类与接口
- 黑马程序员_抽象类与接口
- 黑马程序员_抽象类、接口
- 黑马程序员_接口和抽象类
- 黑马程序员_抽象类和接口
- 黑马程序员_抽象类与接口
- 黑马程序员_抽象类与接口
- 类_接口_抽象类的练习
- final_抽象类_模版模式_接口
- 黑马程序员_java 继承_抽象类_接口
- hdu 5058 So easy
- Java的内存泄露
- 大学成绩如何修改找黑客能否支持改后付款
- 使用BusyBox制作嵌入式Linux根文件系统
- 隐马尔科夫学习三
- 抽象类_接口
- hunnu--11543--小明的烦恼——分糖果
- Android Service
- 黑马程序员——网络编程总结(二)
- What's the difference between UTF-8 and Unicode?
- bootstrap-demo-source-code
- leetcode 98 【查询是否是平衡树】
- 详细解析Java中抽象类和接口的区别
- 策略模式与简单工厂模式区别(转)