美文网首页
进阶:抽象类

进阶:抽象类

作者: 雪上霜 | 来源:发表于2020-04-25 09:05 被阅读0次
image.png
  • 抽象类:类与类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类。

  • 类本身是不存在的,所以抽象类无法创建对象(无法实例化)。

  • 抽象类属于什么类型:引用数据类型。

  • 语法:

    • [修饰符列表] abstract class 类名{

      类体;

      }

  • 抽象类是无法实例化的,无法创建对象的,所以抽象类是用来被子类继承的。

  • abstract 和final不能同时出现。

  • 抽象类的子类可以是抽象类。也可以是非抽象类。

  • 抽象类无法实例化,但是有构造方法。这个构造方法供子类使用的。

  • 抽象类关联到一个概念:抽象方法:表示没有实现的方法,没有方法体的方法。

    • public abstract void doSome();
    • 无方法体,以分号结尾。
    • 有abstract关键字。
    • 抽象类中可以有非抽象方法。
  • 抽象类中不一定有抽象方法。抽象方法必须在抽象类中。

  • 一个非抽象的类,必须将抽象类中的抽象方法覆盖/重写、实现。

  • public class AbstractTest{
      public static void main(String[] args){
          
      }
    }
    
    abstract class Account{
    
    }
    
    class CreditAccount extends Account{
    
    }
    
    
    
  • public class AbstractTest{
      public static void main(String[] args){
          Animal a = new Bird();  //面向抽象编程。
          //面向抽象编程,不要面向具体编程,降低程序的耦合度,提高程序的扩展力。这种编程思想符合OCP原则。
          a.move();   //编译时move是Animal的,运行时是Bird的。
      }
    }
    
    abstract class Animal{
      public abstract void move();
    }
    
    //如果Bird是一个抽象类,Animal中的抽象方法可以不重写。
    class Bird extends Animal{
      //需要将从父类继承过来的抽象方法进行覆盖/重写,或者实现。
      //把抽象方法实现。
      public void move(){
          System.out.println("鸟儿在飞翔");
      }
    }
    
  • Java语言中凡是没有方法体的方法都是抽象方法????

    • 不对:Object类中就业很多方法没有方法体,都是以;结尾的。但是他们都不是抽象方法,例如:public native int hashCode(); 这个方法底层调用C++写的动态链接库程序。前面修饰符列表中没有abstract,有一个native,表示调用JVM本地程序。

相关文章

网友评论

      本文标题:进阶:抽象类

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