学习笔记---抽象类

抽象类

1. 抽象类与抽象方法:

  • 抽象类是指在普通类的结构里面增加抽象方法的组成部分。
  • 抽象类用来描述一个类型具备的基本特征和功能,具体的实现方式以及细节由子类去重写实现
  • 抽象方法是只声明了方法,但没有方法体的方法
  • 抽象方法只能出现在抽象类中,但抽象类中可以存在其他普通方法
  • 抽象类无法创建对象,只能被子类继承后,创建子类对象
  • 子类必须重写父类中的所有抽象方法,若子类没有重写父类中的所有方法,则子类也必须定义为抽象类

2. 注意点:

  • 由于抽象类中也有一些属性,所以抽象类中也有构造器,存在目的是为了属性的初始化,子类实例化时,先执行父类构造器,再执行子类构造器
  • 抽象类不能用final声明,因为抽象类必须有子类,而final类型的类不能被继承
  • 外部抽象类不允许使用static声明,而内部的抽象类运行使用static声明。使用static声明的内部抽象类相当于一个外部抽象类,继承的时候使用“外部类.内部类”的形式表示类名称

代码示例:

  • 使用static声明外部抽象类,报错
package oop.Demo07;

//报错
public static abstract class A {
    public void fun(){
        System.out.println("fun");
    }

    public abstract void print();
}

  • 使用static声明内部抽象类
package oop.Demo07;

public abstract class A {
    public static abstract class C{
        public abstract void print();
    }
}
package oop.Demo07;

public class B extends A.C{
    @Override
    public void print() {
        System.out.println("static内部抽象类");
    }
}
package oop.Demo07;

public class TestDemo {
    public static void main(String[] args) {
        A.C ac = new B();
        ac.print();     //static内部抽象类
    }
}

3. 抽象类以及方法的定义

  • 格式:
  public abstract class A {	//抽象类
      public void fun(){
          System.out.println("fun");
      }
  
      public abstract void print(); //抽象方法
  }
package oop.Demo07;

public class B extends A{  //子类继承抽象类A
    @Override
    //对父类中的方法进行重写
    public void print() {
        System.out.println("子类对父类中的抽象方法重写");
    }
}
package oop.Demo07;

public class TestDemo {
    public static void main(String[] args) {
        A a = new B();
        a.print();  //子类对父类中的抽象方法重写
        a.fun();    //fun
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值