java基础语法(十二)抽象abstract

1、什么是抽象类?
类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类。
类本身是不存在的,所以抽象类无法创建对象(无法实例化)
2、抽象类属于什么类型?
抽象类也属于引用数据类型。
3、抽象类怎么定义
语法:
[修饰符列表] abstract class 类名{
类体;
}
4、抽象类是无法实例化的,无法创建对象的,所以抽象类是用来被子类继承的。
5、final和abstract不能联合使用,这两个关键字是对立的。
6、抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法是供子类使用的。
7、抽象类关联到一个概念:抽象方法。
抽象方法表示没有实现的方法,没有方法体的方法。
例如:public abstract void doSome();
抽象方法特点是:
特点1:没有方法体,以分号结尾。
特点2:前面修饰符列表有abstract关键字
8、抽象类中不一定有抽象方法,但是抽象方法必须出现在抽象类中。
重要结论:一个非抽象类继承抽象类,必须将抽象类中的抽象方法实现了。继承过来的该抽象方法进行重写/覆盖,也可以叫做实现,把抽象的方法实现了
java语言中凡是没有方法体的方法都是抽象方法吗?
错误。Object类中就有很多方法没有方法体,都是以";"结尾的,但他们不是抽象方法,例如:
public native int hashCode();
这个方法底层调用了c++写的动态链接库程序。前面修饰符列表中没有abstract。有一个native。表示调用JVM本地程序。
对抽象类的理解:
在这里插入图片描述

public class AbstractTest01 {
    public static void main(String[] args)
    {
        //能不能使用多态?
        //父类型引用指向子类型对象
        Animal a = new Bird(); //向上转型(自动类型转换)
        //这就是面向抽象的编程,通过a.xxx调用Animal中的方法。
        //a的类型是Animal,Animal是抽象的
        //面向抽象编程,不要面向具体编程,降低程序的耦合度,提高程序的扩展力
        a.move();
    }
}
// 动物类(抽象类)
abstract class Animal
{
    //抽象方法
    public abstract void move();
}

//子类(非抽象的)
class Bird extends Animal
{  /*
   直接运行会报以下的错误(在没有重写父类(抽象类)的抽象方法时,会报以下错误)
   Error:(38, 1) java: javase2.Bird不是抽象的, 并且未覆盖javase2.Animal中的抽象方法move()
   */
    //会将父类的抽象方法继承过来,但抽象方法无法在普通类中"存在"
    //所以需要对继承过来的该抽象方法进行重写/覆盖,也可以叫做实现,把抽象的方法实现了

    public void move(){
        System.out.println("鸟儿在飞翔!");
    }
}

abstract class Cat extends Animal{
    //如果该类是抽象类的话,那么从Animal继承过来的抽象方法也可以不去重写/覆盖

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值