抽象类及抽象类

如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

如形状类是抽象的类,圆、三角形等是具体类。用abstract修饰的类就是抽象类。

如果某个类中包含有抽象方法,那么该类就必须定义成抽象类。但是抽象类中不一定有抽象方法。

如果子类继承抽象类,那么必须在子类中实现抽象类中的抽象方法。

使用关键字abstract定义抽象类,一般语法:

[访问权限]                 abstract                   class 类名            { 成员列表 }

例如:

public abstract class Shapes

   {

     public void draw(){

       //具体代码

    }

}

抽象类可以有成员属性和非抽象的成员方法。

抽象类不能被实例化,但可以有构造函数。 抽象类只能用作基类,表示的是一种继承关系。

继承抽象类的非抽象类必须实现其中的所有抽象方法,而已实现方法的参数、返回值要和抽象类中的方法一样。否则,该类也必须声明为抽象类。

构造方法和静态方法不可以修饰为abstract。

抽象方法:

在某些情况下,类无法(或者没有必要)提供方法的具体实现,可以将此方法声明成抽象方法;

在类中没有方法体的方法,就是抽象方法;

使用关键字abstract声明抽象方法,一般语法:

[访问权限]     abstract     返回值类型      方法名称(参数列表);

例如:

public abstract void draw();

抽象的作用:

在面向对象领域,抽象类主要用来进行类型隐藏;也就是使用抽象的类型来编程,但是具体运行时就可以使用具体类型。

利用抽象的概念,能够在开发项目中创建扩展性很好的架构,优化程序。

抽象类,抽象方法,在软件开发过程中都是设计层面的概念。也就是说,设计人员会设计出抽象类,抽象方法,程序员都是来继承这些抽象类并覆盖抽象方法,实现具体功能。

时间: 2024-10-13 09:56:22

抽象类及抽象类的相关文章

【转+分析】JAVA: 为什么要使用"抽象类"? 使用"抽象类"有什么好处?

老是在想为什么要引用抽象类,一般类不就够用了吗.一般类里定义的方法,子类也可以覆盖,没必要定义成抽象的啊. 看了下面的文章,明白了一点. 其实不是说抽象类有什么用,一般类确实也能满足应用,但是现实中确实有些父类中的方法确实没有必要写,因为各个子类中的这个方法肯定会有不同,所以没有必要再父类里写.当然你也可以把抽象类都写成非抽象类,但是这样没有必要. 而写成抽象类,这样别人看到你的代码,或你看到别人的代码,你就会注意抽象方法,而知道这个方法是在子类中实现的,所以,有个提示作用. =========

《Java中的抽象类及抽象类的作用》

1 //抽象类示例: 2 abstract class Shape1 3 { 4 { 5 System.out.println("执行Shape的初始化块..."); 6 } 7 private String color; 8 //定义一个计算周长的抽象方法, 9 public abstract double calPerimeter(); 10 //定义一个返回形状的抽象方法, 11 public abstract String getType(); 12 //定义Shape的构造器

PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

  前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1  PHP中的抽象类与抽象方法 1.什么是抽象方法?              没有方法体 {} 的方法,必须使用abstract 关键字修饰.这样的方,我们叫做抽象方法.                    abstract function say(); //    抽象方法 2.什么是抽象类?        

第14章 抽象类和接口

抽象类:类的设计应该确保父类包含它的子类的共同特征.有时候,一个父类设计的非常抽象,以至于它都没有任何具体的实例.这样的类称为抽象类.类名前使用abstract 抽象方法:父类中的方法,因为父类为抽象,无法根据具体的实例进行实现,因此,这样的方法属于抽象方法.方法头使用abstract UML中抽象类和抽象方法的名字用斜体表示: 抽象类不能使用new创建实例.抽象方法只有定义而没有实现.它的实现由子类提供.一个包含抽象方法的类必须声明为抽象类. 抽象类的构造方法定义为protected,因为它只

java抽象类的使用

/*当多个类中出现相同功能,但是功能主体不同,这是可以进行向上抽取.这时,只抽取功能定义,而不抽取功能主体. 抽象:看不懂. 抽象类的特点:1,抽象方法一定在抽象类中.2,抽象方法和抽象类都必须被abstract关键字修饰.3,抽象类不可以用new创建对象.因为调用抽象方法没意义.4,抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用.    如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类. 抽象类和一般类没有太大的不同.该如何描述事物,就如何描述事物,只不过

JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展

JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来聊聊final这个关键字 final可以修饰类,方法和变量 final修饰的类不可以被继承 final修饰的方法不可以被覆盖 final修饰的变量是一个常量,只能被赋值一次 内部类只能访问被final修饰的局部变量 final,故名思意,就是最终的意思,由以上的五种特性,不过final的出现,也是有

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

什么是接口? 用来定义一种程序的协定.实现接口的类或者结构要与接口的定义严格一致.有了这个协定,就可以抛开编程语言的限制(理论上).C#接口可以从多个基接口继承,而类或结构可以实现多个接口.C#接口可以包含方法.属性.事件和索引器.接口本身不提供它所定义的成员的实现.接口只指定实现该接口的类或接口必须提供的成员. 如何使用接口? 例如: <span style="font-family:KaiTi_GB2312;">using System; using System.Co

C#OOP之八 继承 接口和抽象类

继承 在现实生活中有所谓的"种瓜得瓜.种豆得豆"的说法,在生物学概念上就是"遗传"的概念,在面向对象中"继承"就类似于生物学中的遗传,通过继承,可以更好的实现代码的重用(复用,多次使用的意思).增加扩展性.简化代码等. 下面是现实生活中的引用: 定义与使用继承 继承一次最常用的就是通过合法程序(比如遗嘱)从别人那里接受财产或爵位等,有点类似于世袭制. 另外一个含义,是人从父母那里继承一些特征,如果孩子从父母继承的身高.相貌等特征.那么在什么情况下

java 抽象类与接口

1.抽象类 (1)含有抽象方法的类一定是抽象类,抽象类可以没有抽象方法. (2)抽象方法必须是public或者protected类型,不能是private类型,否则无法被继承. (3)抽象类不能自实现,如果需要实现,一定需要被继承,然后通过多态的形式实现. 2.接口 接口,英文称作interface,Java语言设计者的初衷设计接口的目的是对行为的抽象.接口中的变量会被隐式地指定为public static final变量,方法会被隐式地指定为public abstract方法且只能是publi