4.4抽象类
来源:互联网 发布:个人网络贷款 编辑:程序博客网 时间:2024/06/06 03:49
1.抽象类的定义:
- 在日常生活中,我们可以把具有相同性质的事物定义成一个类。交通工具类为例,他的对象可以是:飞机,火车,高铁。这些具体的对象有共同的性质,我们可以把这些具体的对象抽象定义成一个父类,把具体的对象定义成子类。父类中描述的是这些对象的共同特征,他没有够的信息来完整的描述某个对象,这样的类称为抽象类。
- 抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
- 100个人同时写同一个类,那有可能写出100个各种各样的类
但假如从一个抽象类继承,那么写出的类的基础功能大同小异
在实际开发项目中,主程可以定义一个抽象类,意思给个大致方向
手下的程序员都要从这个类继承并严格实现,方便交流 - 抽象类不能实例化,即不能产生抽象的对象(他是一个抽象的概念,没有具体的对象)。
- 抽象类中的抽象方法只有声明部分没有实现部分(因为不需要实现,抽象类就是为了继承,子类重写抽象方法从而达到多态)。
- 抽象类中不能定义静态抽象方法,因为抽象方法不能实例化(不会被分配内存)而静态方法在类加载时就会被分配内存。并且静态方法不会被重写。
- 当一个类继承抽象类,要实现该抽象类中的所有抽象方法,否则该类为抽象类。
抽象类继承的示例:
abstract class A { abstract void mod1(); abstract void mod2();}class B extends A{ void mod1(){ //B类中重写抽象方法 System.out.println("B1"); } void mod2(){ System.out.println("B2"); }}class C extends A{ void mod1(){//C类中重写抽象方法 System.out.println("C1"); } void mod2(){ System.out.println("C2"); }}public class Test{ public static void main(String args[]){ A a=new B(); a.mod1();//调用的是重写的方法。 a.mod2(); a.mod1(); a.mod2(); }}
2.抽象方法的作用
- 如果父类为抽象类,则子类中都具有的功能在父类中定义,而子类如何实现这个功能,只要实现父类中的抽象方法,即重写。从而形成多态。
抽象类行成多态的示例
//通过抽象类实现多态!!abstract class Shape{ abstract double getArea(); abstract String getShapeinfo();}class Triangle extends Shape{ double a; double b; double c; Triangle(double a,double b,double c){ this.a=a; this.b=b; this.c=c; } double getArea(){ double p=(a+b)/2; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); } String getShapeinfo(){ return "Triangle:"; }}class Rectangle extends Shape{ double a; double b; Rectangle(double a,double b){ this.a=a; this.b=b; } double getArea(){ return a*b; } String getShapeinfo(){ return "Rectangle: "; }}public class AbstractTest{ public void printArea(Shape s){//printArea方法中的参数指向其子类对象并且调用子类重写的方法! System.out.println(s.getShapeinfo()+s.getArea()); } public static void main(String args[]){ AbstractTest aot=new AbstractTest(); Shape s=new Triangle(3,4,5); aot.printArea(s); s=new Rectangle(5,6); aot.printArea(s); }//如果再加一个子类无需改变主类中的方法prinArea(Shape s)只需将新加的类继承父类并实现两个方法就行!
阅读全文
1 0
- 4.4抽象类
- 抽象类 抽象函数
- 抽象类、抽象方法
- 抽象类抽象方法
- 抽象类,抽象方法
- 抽象类,抽象方法
- 抽象方法,抽象类
- 抽象类、抽象方法
- 抽象类、抽象字段、抽象方法
- 抽象类、抽象方法、抽象属性
- 13.抽象类、抽象字段、抽象方法
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- springMVC 配置好后无法访问controller报500错误
- jquery如何判断滚动条滚到页面底部并执行事件
- Mybatis中动态SQL语句中的parameterType不同数据类型的用法
- Xcode 的清理
- jQuery判断checkbox是否选中
- 4.4抽象类
- @ExceptionHandler
- django.core.exceptions.ImproperlyConfigured:
- Android开发艺术探索学习摘要(五)
- c# 面向对象基础技能
- [Leetcode] 152. Maximum Product Subarray
- git使用手册
- 在C程序中调用汇编函数
- Scala学习七:数组