GOGOGO 抽象

抽象其实也算面向对象特征之一

抽象

含义:当多个子类中的共性向上提取,父类中不知道如何写具体实现,因为提取的共性并不一定能解决子类中实现的功能【同结构不一定同实现代码体】,就需要抽象概念

作用

父类只抽取结构,不抽取实现,并且子类继承了父类之后,必须强制重写该结构

为什么需要用抽象类

当多个子类存在公共特性的时候,会把它们公共的属性和行为向上提取,比如都提取了移动的方法,有跑、跳、滚、爬等等,但是该方法里面,不知道具体写什么,因为父类里面定义的代码,都是子类公共代码,虽然子类可以重写父类的方法,但是没有强制的约束,有些子类可能没有重写,那么调用移动的方法就会出现很大的问题

何为抽象类?

abstract 修饰的类

例:
public abstract class DemoAbstract {
	类成员……;
}

抽象类里面的成员有哪些?

A、成员变量
B、构造方法
C、普通方法(包含静态/非静态方法)
D、抽象方法【先有抽象类,再有抽象方法;并且只有结构没有方法体】

例:
public abstract class DemoAbstract {
    //成员变量
    String name;
    //无参构造
    public DemoAbstract(){
    }
    //有参构造
    public DemoAbstract(String name){
        this.name = name;
    }
    //普通方法——静态修饰方法
    public static void demoMethodStiatic(String name){
        System.out.println(name);
    }
    //普通方法——非静态修饰方法
    public void demoMethod(String name){
        System.out.println(name);
    }
    //抽象方法
    abstract void method();
}

如何调用

在实际开发中,一般都是普通类去继承抽象类,从而普通类的实例化,进行方法的使用

在这里插入图片描述

注意事项

A、abstract修饰的类不能被实例化【虽然有构造方法,但是不能被实例化,否则直接编译错误】

在这里插入图片描述

B、抽象方法不能放到普通类里面,只能放到接口或抽象类中

在这里插入图片描述

C、抽象方法只能放到抽象类中,普通类继承抽象类,必须重写抽象类中的方法

在这里插入图片描述

如果是抽象类继承抽象类,不会强制重写基类抽象类中的方法

在这里插入图片描述

PS1:有继承关系,this对于成员变量和普通方法时,在当前类中找不到可以向上(父类)查找,但对于构造方法只能当前类查找,不能向上查找

PS2:@Override注解表示方法重写,专门用来验证方法是否重写成功了的

PS3:对于方法重写,final修饰的方法不能被子类重写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值