当前位置: 首页 > article >正文

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修饰的方法不能被子类重写


http://www.kler.cn/a/467856.html

相关文章:

  • 数据挖掘教学指南:从基础到应用
  • Neo4j的部署和操作
  • PostgreSQL学习笔记(一):PostgreSQL介绍和安装
  • AngularJS HTML DOM
  • 计算机网络——数据链路层-流量控制和可靠传输
  • leetcode 面试经典 150 题:轮转数组
  • 「Mac畅玩鸿蒙与硬件51」UI互动应用篇28 - 模拟记账应用
  • 大数据技术(七)—— HBase数据结构与架构
  • java接口下载zip,不生成中间文件,返回前端文件流
  • Fabric部署-docker安装
  • exam0-试卷整理
  • 小试牛刀-SpringBoot集成SOL链
  • 信息科技伦理与道德1:研究方法
  • Codeforces Round 995 (Div.3)
  • 探索 Google Test: 从基础断言到高级 Mock 技巧
  • js canvas绘制五星红旗
  • Outlook2024版如何回到经典Outlook
  • Windows 11 上通过 WSL (Windows Subsystem for Linux) 安装 MySQL 8
  • html+css+js网页设计 美食 美食天下2个页面(里面包含php和mysql)
  • Launcher3主页面加载显示流程分析
  • ROS节点架构设计:提高模块化与可扩展性
  • 算法解析-经典150(区间、栈)
  • 【通识安全】应急救护常识23则
  • C++软件设计模式之访问者模式
  • Linux 异步 I/O 框架 io_uring:基本原理、程序示例与性能压测
  • Android SPRD 工模测试修改