码迷,mamicode.com
首页 > 其他好文 > 详细

抽象类详解

时间:2018-05-09 16:02:58      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:抽象类;Java;

一,抽象类介绍

1.1 什么是抽象

       抽象类:简单点来说就是不能实例化的类(或者说不能用new方法实例化的类)抽象类有点类似“模板的作用,其目的是根据他的格式来创建和修改新的类。(比如:盖房子首先有要画图纸,在照着图纸进行造房子。图纸就好比如抽象类,建房子就好比如抽象类派生的子类)

1.2 抽象方法

       抽象方法:含有Abstract关键字开头的方法叫做抽象方法。注意抽象方法声明中修饰符static和abstract不能同时使用。抽象方法没有方法体,否则会报错。
       原因解释
       1. 抽象方法为什么没有方法体:抽象类的抽象方法需要继承它的子类来实现,如果有方法体,子类去玩吗?本来抽象类起到的类似于”模板”的作用,好比于一种参考。
       2. 抽象方法为什么abstract和static不能同时使用:这要探讨static修饰符的特性了,静态方法属于整个类的,静态方法只能访问静态成员变量或调用静态的成员方法。静态方法和静态属性可以被继承,但是没有被重写而是被隐藏。(这个下篇文章我会讲解),抽象类被继承后抽象方法会重写,而静态方法会被隐藏没有重写。

1.3 两者之间的关系

       关系:含有抽象方法的类叫做抽象类,抽象类不一定还有抽象方法。

1.4 抽象类的特性

  1. 抽象类本能被实例化不能new
  2. 抽象类的抽象方法abstract和static不能同时使用
  3. 抽象类中可以有属性, 可以存在普通方法,抽象类一定有构造方法,其目的是对属性的初始化。
  4. 抽象类不能别final声明(final定义的类没有子类)
  5. 可以直接调用抽象类中的静态方法(静态方法属于类的本身)

    1.5 代码演示:

 abstract public class A {
    public int a=10;
        public A()
    {

    }
    public void print()
    {
        System.out.println("抽象类中的普通方法");
    }
    public static void printStatic()
    {
        System.out.println("抽象类中的静态犯法");
    }
    public static void main(String[] args) {
        A.printStatic();
        A a=new A();//对抽象类进行实例化
    }

}

报错

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Cannot instantiate the type A

    at com.demo.Abstract.Test.A.main(A.java:15)

抽象类详解

标签:抽象类;Java;

原文地址:http://blog.51cto.com/12666319/2114396

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!