首页 > 编程语言 >Java - 27 抽象类 + 接口

Java - 27 抽象类 + 接口

时间:2024-11-07 19:31:10浏览次数:4  
标签:27 Java void 接口 class 抽象类 方法 public

Java 抽象类+接口

抽象类

当父类的某些方法需要声明,但又不确定如何实现时(父类方法不确定性问题),可以将其声明为 抽象方法,这个类就是 抽象类

public abstract class Animal{
  abstract public void eat(); // 抽象方法没有方法体
}

一般来说,抽象类会被继承,由其子类具体实现

细节

  • 抽象类不能被实例化

  • 抽象类 不一定要包含抽象方法,还可以有实现方法

  • 抽象类本质就是类,类有的它都有

  • abstract 只能修饰类和方法

  • 如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它也声明为抽象类

    class Cat extends Animal{
      @Override
      public void eat(){
        // 有方法体就是重写,不管方法体里写了什么
      }
    }
    
  • 抽象方法不能使用 private,final,static 来修饰(这些关键字和重写相违背)

接口

把一些没有实现的方法封装到一起,到某个类要使用时再根据具体情况把这些方法写出来

interface 接口名{
  // 属性
  // 方法
}
class 类名 implements 接口{
  // 自己属性
  // 自己方法
  // 必须实现的接口抽象方法
}

在jdk7.0之前,接口里的所有方法都没有方法体(都是抽象方法)

jdk8.0之后,接口可以有 静态方法默认方法,也就是接口中可以有方法的具体实现

public interface AInterface{
  public int n1 = 1;
  void hi(); // 在接口中,可以省略abstract
  // 默认方法
  default public void ok(){
    
  }
  // 静态方法
  pulic static void cry(){
    
  }
}
class A implements AInterface{
  @Override
  public void hi(){
    
  }
}

细节

  • 接口 不能被实例化

  • 接口中的 所有方法都是 public 方法,接口中的抽象方法,可以不用 abstract 修饰

  • 一个普通类实现接口,就必须将该接口的所有抽象方法都实现

  • 抽象类实现接口,可以不用实现接口的方法

  • 一个类可以同时实现多个接口

    interface IA{
      void hi();
    }
    interface IB{
      void hello();
    }
    class A implements IA,IB{
      @Override
      public void hi(){
        
      }
      @Override
      public void hello(){
        
      }
    }
    
  • 接口中的 所有属性只能是 public final static 的(必须初始化)接口名.属性名

  • 接口不能继承其它的类,但可以继承多个别的接口

  • 接口的修饰符只能是 public 和 默认,和类一样

继承与接口

  • 当子类继承了父类,就自动拥有父类的功能,如果子类需要扩展功能,可以通过实现接口的方式扩展

  • 继承的价值在于 解决代码的复用性和可维护性

    接口的价值在于 设计好各种规范,让其它类去实现这种方法

  • 接口在一定程度上可以实现 代码解藕(接口规范性+动态绑定)

接口的多态性

  1. 多态参数:接口类型的变量 可以指向 实现了接口的类的对象实例

  2. 多态数组:接口类型数组

  3. 多态传递

    IN in = new AA();
    IM im = new AA();
    
    interface IM{}
    interface IN extends IM{}
    class AA implements IN{}
    

练习

interface A{
  int x = 1;
}
class B{
  int x = 10;
}
class C extends B implements A{
  public void pX(){
    // 明确指定x
    System.out.println(super.x);
    System.out.println(A.x);
  }
  
  public static void main(String[] args){
    new C().pX();
  }
}

标签:27,Java,void,接口,class,抽象类,方法,public
From: https://www.cnblogs.com/wxrwajiez/p/18523931

相关文章

  • PowerShell 脚本(.ps1)、批处理文件(.bat)、VBScript(.vbs) 和 旧版 JavaScript(.js) 都可以在
    PowerShell脚本(.ps1)、批处理文件(.bat)、VBScript(.vbs)和旧版JavaScript(.js)都可以在Windows系统中运行,但它们的兼容性和支持范围有一定的差异,尤其是在不同的Windows版本上。下面是它们在Windows系统中支持的情况:1. PowerShell脚本(.ps1)兼容性: PowerShell是自Window......
  • 高级java每日一道面试题-2024年10月29日-JVM篇-简述分代垃圾回收器是怎么工作的?
    如果有遗漏,评论区告诉我进行补充面试官:简述分代垃圾回收器是怎么工作的?我回答:在Java高级面试中,分代垃圾回收器的工作原理是一个重要的考点。下面将详细解释分代垃圾回收器是如何工作的:分代垃圾回收器的基本概念分代垃圾回收器是一种基于对象生命周期的垃圾回收方......
  • 高级java每日一道面试题-2024年10月28日-RabbitMQ篇-RabbitMQ的使用场景有哪些?
    如果有遗漏,评论区告诉我进行补充面试官:RabbitMQ的使用场景有哪些?我回答:RabbitMQ是一个开源的消息代理和队列服务器,它遵循高级消息队列协议(AMQP)。RabbitMQ的核心作用是作为应用程序之间的中介,实现异步消息传递。它可以帮助解耦系统组件、提供消息的持久化、支持消息......
  • Javaweb之servlet常见面试题
    目录什么是Servlet?解释请求转发forward()方法和请求重定向sendRedirect()方法的区别?什么是Session?Session的工作原理?什么是Session?Session的工作原理:Session的特点:说一说HttpServletRequest、ServletContex和HttpSesssion三个对象的作用域?解释下Servlet生命周期?JSP和S......
  • Nexpose 6.6.277 for Linux & Windows - 漏洞扫描
    Nexpose6.6.277forLinux&Windows-漏洞扫描Rapid7VulnerabilityManagement,releasedNov06,2024请访问原文链接:https://sysin.org/blog/nexpose-6/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org您的本地漏洞扫描程序新增功能2024年11月......
  • 20222327 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    一、实验内容1.恶意代码文件类型标识、脱壳与字符串提取2.使用IDAPro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。3.分析一个自制恶意代码样本rada,并撰写报告,回答问题4.取证分析实践二、实验过程1.对恶意代码样本,进行文件类型识别,脱壳与字......
  • 基于JAVA的在线购物平台设计与实现-计算机毕设 附源码 26720
    基于JAVA的在线购物平台设计与实现摘要基于JAVA的在线购物平台设计与实现是一个涉及到软件开发和电子商务的综合课题。在这样的平台上,用户可以浏览商品、将商品加入购物车、进行下单购买等操作。为了实现这一功能,需要考虑到前后端的交互、数据库的设计、安全性和用户体......
  • 在Windows上同时运行多个java程序如何区分
    显示命令行后通过jar文件路径区别也可以通过内存大小来判定是哪个程序在服务中也能找到PID用*.bat来启动UdpListener8102效果,会在应用中显示用服务启动则在后台进程中显示 ......
  • 【Java深度揭秘】掌握SPI机制,让你的代码设计更优雅!
    SPI(ServiceProviderInterface)机制是Java中一种服务发现和加载的机制,它允许第三方为应用程序提供实现。SPI机制广泛应用于Java标准库以及各种框架中,如JDBC、JNDI等。SPI机制的基本概念接口定义:首先定义一个接口,这个接口规定了服务提供者需要实现的方法。配置文件:在META-INF/......
  • Springboot 配置yml文件 ENC 加密及failed to bind properties under '********' to j
    1.添加依赖<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</version></dependency>2.设置加密盐......