美文网首页
Java-抽象类

Java-抽象类

作者: 一只洁_ | 来源:发表于2019-08-12 19:53 被阅读0次
抽象类的概念

普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。

什么叫抽象方法?
在所有的普通方法上面都会有一个"{}",这个表示方法体,有方法体的方法一定可以被对象直接使用。而抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰

拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明。

定义一个抽象类

abstract class A {
      public void fun(){  
            System.out.println("hello java!");
      }

      public abstract void print();//抽象方法,没有方法体
}
抽象类的使用

抽象类无法直接进行实例化操作。
原因:当一个类实例化之后,就意味着这个对象可以可以调用类中的属性或者方法了,但是在抽象类里存在抽象方法,而抽象方法没有方法体,没有方法体就无法进行调用。既然无法进行调用,就无法产生实例化对象。

抽象类的使用原则
1.抽象方法必须为public或者protected (因为如果为private ,则不能被子类继承,子类便无法实现该方法)。
2.抽象类不能直接实例化,需要依靠子类采用向上转型的方式处理。
3.抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类
4.子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract类)

抽象类的使用限制

1.抽象类中有构造方法吗?
由于抽象类里会存在一些属性,那么抽象类中一定存在构造方法,其存在目的是为了属性的初始化。
并且子类对象实例化的时候,依然满足先执行父类构造,再执行子类构造顺序。

2.抽象类可以用final声明吗?
不能,因为抽象类必须有子类,而final定义的类不能有子类

3.抽象类能否使用static声明?
外部类不允许使用static声明,而内部类的抽象运行使用static声明。使用static声明的内部抽象类相当于一个外部抽象类,继承的时候使用“外部类.内部类”的形式表示类名称。

4.可以直接调用抽象类中的static声明的方法吗?
任何时候,如果要执行类中的static方法的时候,都可以再没有对象的情况下直接调用,对于抽象类也一样。

相关文章

  • Java-接口与抽象类

    Java-接口与抽象类 抽象类 如果编写一个类时,我们只想为该类定义一些方法,但是具体的实现交给继承它的子类来实现...

  • Java-抽象类

    抽象类的概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、sta...

  • Hello Java

    目录 Java-基础(1/6) Java-对象(2/6) Java-核心库类 上(3/6) Java-核心库类下(...

  • Java-基础-抽象类

    由于多态的存在,每个子类都可以覆写父类的方法 能不能去掉父类的run()方法?-----不能如果父类Person的...

  • Java-浅析Object类

    Java-浅析Object类 ++2016.7.19++byside @Java-浅析Object类 ======...

  • Java-抽象类与接口

    抽象类与接口 抽象类和接口似乎在功能上没什么区别,主要作用都是为了规范类的行为。然而,既然同时存在这两种概念,那必...

  • Java- 抽象类和接口

    抽象类和常规类一样,都有数据和方法,但是不能用new操作符创建抽象类的实例。 非抽象类中不能包含抽象方法,如果抽象...

  • JAVA-线程-一-执行器Executor

    2. JAVA-线程-二-ExecutorService 接口 3. JAVA-线程-三-AbstractExec...

  • JAVA-线程-三-AbstractExecutorServic

    1. JAVA-线程-一-执行器Executor 2. JAVA-线程-二-ExecutorService 接口 ...

  • JAVA-线程-二-ExecutorService 接口

    1. JAVA-线程-一-执行器Executor 3. JAVA-线程-三-AbstractExecutorSer...

网友评论

      本文标题:Java-抽象类

      本文链接:https://www.haomeiwen.com/subject/pakyjctx.html