美文网首页
进阶:抽象类

进阶:抽象类

作者: 雪上霜 | 来源:发表于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