抽象类与接口 day-11.2

通常可以说四边形具有4条边,或者更具体点,平行四边形是具有对边平行且相等特性的特殊四边形,等腰三角形是其中两边相等的三角形,这些描述都是合乎情理的,但是对于图形对象却不能使用具体的语言进行描述,他有几条边,究竟是什么图像,没有人能说清楚,这种类在java中被定义为抽象类。

一:抽象类

在解决实际问题时,一般将父类定义为抽象类,需要使用这个父类进行继承与多态处理。回想继承与多态的原理,继承树中越是在上边的类越抽象,如鸽子类继承鸟类,鸟类继承动物类等。在多态机制中,并不需要将父类初始化对象,我们需要的只是子类对象,所以在java中设置抽象类不可以实例化对象,因为图形类不能抽象出任何一种具体图形,但他们的子类可以。

抽象类的语法:

public abstract class Test{

abstract void testAbstract();//定义抽象方法

}

其中,abstract是定义抽象类的关键字。

使用abstract关键字定义的类称为抽象类,而使用这个关键字定义的方法称为抽象方法;抽象方法没有方法体,这个方法本身没有任何意义,除非他被重写,而承载这个抽象方法的抽象类必须被继承,实际上抽象类除了被继承之外没有任何意义。

反过来讲,如果声明一个抽象的方法,就必须将继承这个抽象方法的类定义为抽象类,不可能在非抽象类中获得抽象方法。换句话说,只要类中有一个抽象方法,此类就被标记为抽象类。

抽象类被继承后需要实现其中所有的抽象方法,也就是保证相同的方法名称,参数列表和相同返回值类型创建出非抽象方法,当然也可以是抽象方法。

继承抽象类的所有子类需要将抽象类中的抽象方法进行覆盖。这样在多态机制中,就可以将父类修改为抽象类,将方法修改成抽象方法,然后每个子类都重写这个方法类处理。但这又会出现我们刚探讨的多态是讨论的问题,程序中灰有太多冗余的代码,同时这样的父类局限性很大,也许某个不需要父类方法的子类也不得不重写方法。如果将方法放置在另外一个类中,这样让那些需要方法的类继承该类,而不需要方法的类继承图形类,但所有的子类都需要图形类,因为这些类是从图形类中被导出的,同时某些类还需要方法,但是在java中规定,类不能同时继承多个父类,面临这种问题,接口的概念就出现了。

二:接口

1.接口简介

接口是抽象类的延伸,可以将它看做是纯粹的抽象类,接口中的所有方法,都没有方法体。对于上面的问题,可以将方法封装到一个接口中,使需要方法的类实现这个接口,同时也继承图形类,这就是接口存在的必要性。

接口使用interface关键字进行定义,其语法如下:

public interface drawTest{

void draw();//接口内的方法,省略abstract关键字

}

*public :接口可以像类一样被权限修饰符修饰,但public关键字仅限用与接口在与其同名的文件中被定义。

*interface :定义接口关键字。

*drawTest:接口名称。

一个类实现一个接口可以使用implements关键字,代码如下:

public class S extends Y implements drawTest{

········

}

注意:在接口中定义的方法必须被定义为public或abstract形式,其他修饰符权限不被java编译器认可,即使不将该方法声明我public形式,他也是public。

说明:在接口中定义的任何字段都自动是static 和final的。

2、接口与继承

我们知道在java中不允许多重继承,但使用接口就可以实现多重继承,因为一个类可以同时实现多个接口,这样可以将所有需要继承的接口放置在implements关键字后并使用逗号隔开,但这可能会在一个类中产生庞大的代码量,因为继承一个接口时需要实现接口中所有的方法。

多重继承的语法如下:

class 类名 implements 接口1,接口2,接口3·····,接口n

在定义一个接口时可使该接口继承另外一个接口:

interface f1{

}

interface f2 extends f1{

}

时间: 2024-10-13 16:08:02

抽象类与接口 day-11.2的相关文章

2.35 Java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别

java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别 一.抽象 abstract作用:不能产生对象,充当父类,强制子类正确实现重写方法和类相比仅有的改变是不能产生对象,其他的都有,包括构造.属性等等任何一个类只要有一个抽象的方法就成了抽象类 抽象方法 public abstract A();①方法是抽象的,这个类也是抽象的:②子类必须重写抽象方法,除非子类也是抽象类 抽象类可以没有抽象方法,但一般不这么设计 二.接口 interface 接口也是Java的一种引用数据类型(J

抽象类与接口

接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 一.抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的.如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类.比如new Animal

java 抽象类和接口

抽象类和接口,一直比较容易混淆,特性很类似,但是细节上又有不一样,总结如下. 首先,要了解什么是抽象方法. 抽象方法是只有方法声明没有方法体的方法用关节自abstract声明,例如 1 abstract returnType funName(Type t1,type2,t2...); 2 //例如 3 abstract int help(int k);; 包含了抽象方法的类,一定是抽象类.但是抽象类中可以没有抽象方法,也可以用自己的类变量(static修饰)和实例变量(非static 但是在类中

Java基础之抽象类和接口

抽象类和接口 一.抽象类和抽象方法 对于抽象类,首先需要介绍抽象方法,而抽象类因抽象方法的存在而存在 1.抽象方法 (1)必要性: 有些父类方法不确定如何写方法体,但是对于继承它的子类又必须用到这个方法.需要用到抽象方法 例如:对于动物类,我们知道父类“动物”会叫,但是因为不同的动物叫的方法不同,而对于子类”狗“这个子类又必须用到“叫”这个方法.因此对于父类“动物”的“叫”方法不知道怎么去写.这里就用到抽象方法. 代码示例: 1 //抽象类讲解 2 public class test抽象类 {

抽象类和接口学习总结

抽象类可以称为一个模板,定义以后所有该基类的子类的最基本特征,就像定义什么叫动物,什么叫植物,所以有些属性和方法是固有的,可以在抽象类中先定义好,就像之前学过的继承一样,把某些很有用的东西传承下去:但还有些东西是不能确定的,比如,这种动物吃什么等,都还是不能确定,但是这又是其固有的和方法,这时候我们可以用关键字 abstract 将其定义为抽象方法,等待它们的子类去实现,而其子类一定要实现这些抽象方法,不然不能被创建实例,依旧是属于抽象类.抽象类适用于很强的父子关系. 抽象类可以没有抽象方法,但

JAVA中的抽象类和接口

一 抽象类 抽象类就是不能被实例化的类,即不可以用new运算符创建本类的对象.在实际应用中,抽象类应该具有子类,且其子类一般不为抽象类. java中使用抽象类的原因有如下四点: 1.抽象类是较高层次的概括,其他的类可以继承它的抽象化特征: 2.抽象类包括它的所有子类共享的公共行为和公共属性,即抽象类中定义一些属性和方法,其他类继承该抽象类并实现这些属性和方法: 3.抽象类使编写程序更贴近人类的思维方式和客观世界: 4.在用户生成实例时强迫用户生成更具体的实例,保证代码的安全性. 二 接口 在接口

C#面试:抽象类与接口

本人近日面试遇到此等问题.然后又一次补习了一下下.希望对同行们有所帮助. 一.抽象类: 抽象类是特殊的类,仅仅是不能被实例化:除此以外.具有类的其它特性:重要的是抽象类能够包括抽象方法,这是普通类所不能的.抽象方法仅仅能声明于抽象类中,且不包括不论什么实现.派生类必须覆盖它们. 另外,抽象类能够派生自一个抽象类,能够覆盖基类的抽象方法也能够不覆盖,假设不覆盖.则其派生类必须覆盖它们. 二.接口: 接口是引用类型的,类似于类,和抽象类的相似之处有三点: 1.不能实例化: 2.包括未实现的方法声明:

C#抽象类与接口的区别

一.抽象类:      抽象类是特殊的类,只是不能被实例化(可以用派生类实例化基类对象):除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法(当然它可以有普通方法),这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须重写(覆盖)它们. 二.接口:      接口包含了一组方法的原型,接口是引用类型的,类似于类,和抽象类的相似之处有三点:       1.不能实例化:(参见MSDN显式接口实现)       2.包含未实现的方法声明:       3.派生类必须实

黑马程序员——Java基础——面向对象——继承、抽象类、接口、多态、包、内部类、异常等

第一讲 继承 1.继承: 当多个类拥有相同的功能时,那么这些类不需要每个都写这些相同的功能,只需要把相同功能抽到 一个单独的类中,继承这个类就能获得这些相同的功能: (1)继承的体系结构:就是对要描述的事物进行不断的向上抽取,就出现了体系结构. 要了解这个体系结构中最共性的内容,就看最顶层的类. 要使用这个体系的功能,就用最底层的类创建对象 (2)好处: A.提高代码复用性: B.继承的出现,让类与类之间产生关系,为多态的前提 (3)特点: A.只能单继承(准确的说是java对多继承进行优化,避

C#中抽象类和接口的区别与使用

一.抽象类: 抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们.另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们. 二.接口: 接口是引用类型的,类似于类,和抽象类的相似之处有三点: 1.不能实例化: 2.包含未实现的方法声明: 3.派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括