首页 > 编程语言 >java面试(9.8)接口和抽象类的区别

java面试(9.8)接口和抽象类的区别

时间:2024-09-08 21:52:18浏览次数:10  
标签:java 接口 class 9.8 Animal 抽象类 public 构造函数

接口:

        定义了一组方法规范,但不提供这些方法的具体实现。

接口的作用:

  1. 定义规范:接口主要用于定义一个规范,规定了实现该接口的类必须遵守的规则。

  2. 实现多继承:一个类可以实现多个接口,从而继承多个接口中定义的方法。

  3. 解耦合:接口提供了一种解耦合的方式,使得代码更加灵活。通过接口,可以实现代码的模块化和组件化,使得系统更加易于维护和扩展。

抽象类:

        是一种不能被直接实例化的类,通常用来作为其他类的基类。抽象类可以包含抽象方法和具体方法,它提供了一种方式来定义一个类的基本框架,同时允许派生类提供具体的实现。

抽象类的例子:

public abstract class Animal {
    public abstract void makeSound(); // 抽象方法
    public void eat() { // 具体方法
        System.out.println("This animal is eating.");
    }
}
public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Woof woof!");
    }
}

抽象方法:

        面向对象编程中的一种方法,它在抽象类或接口中被声明,但没有具体的实现。抽象方法的存在是为了定义一个方法的签名(即方法名、参数列表和返回类型),并要求任何继承该抽象类或实现该接口的子类必须提供这些方法的具体实现。

抽象方法的例子:

public abstract class Animal {
    public abstract void makeSound(); // 抽象方法
}
public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Woof!");
    }
}

public class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Meow!");
    }
}

-------------------------接口和抽象类的区别------------------------------------------

  1. 定义方式

    • 抽象类:使用关键字 abstract 定义。
    • 接口:使用关键字 interface 定义。
  2. 实现/继承

    • 抽象类:一个类只能继承一个抽象类(单继承)。
    • 接口:一个类可以实现多个接口(多继承)。
  3. 构造函数

    • 抽象类:可以有构造函数。
    • 接口:不能有构造函数。
    • 构造函数的例子
    • public abstract class Animal {
          // 抽象类的构造函数
          protected Animal() {
              System.out.println("Animal created.");
          }
      
      }
      
      // 继承抽象类的子类
      public class Dog extends Animal {
          // 调用抽象类的构造函数
          public Dog() {
              super(); // 调用父类的构造函数
              System.out.println("Dog created.");
          }
      
      }
      
      public interface Flyable {
          // 接口中的方法
          void fly();
      }
      
      // 实现接口的类
      public class Plane implements Flyable {
          // 实现类可以有构造函数
          public Plane() {
              System.out.println("Plane created.");
          }
      }
      

    • 方法重写

      • 抽象类:子类可以重写抽象类中的抽象方法和具体方法。
      • 接口:所有实现接口的类都必须重写接口中的所有方法(除非接口中的方法被标记为默认方法)。

标签:java,接口,class,9.8,Animal,抽象类,public,构造函数
From: https://blog.csdn.net/2301_79934374/article/details/142024575

相关文章

  • 1-7java_switch_case语句
    Javaswitchcase语句switchcase语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。语法switchcase语句语法格式如下:`switch``(expression){````case``value:````//语句````break``;``//可选````case``value:````//语句````break......
  • Javaweb-事务
    注意在当前窗口是修改了的:而在其他窗口是不修改的:select@@autocommit;修改为手动提交:......
  • Javaweb-多表查询案例
    数据准备DROPTABLEIFEXISTSemp;DROPTABLEIFEXISTSdept;DROPTABLEIFEXISTSjob;DROPTABLEIFEXISTSsalarygrade;--部门表CREATETABLEdept(idINTPRIMARYKEYPRIMARYKEY,--部门iddnameVARCHAR(50),--部门名称locVARCHAR(50)--部门所在地);-......
  • Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密&解密
    加密效果:解密后的数据就是正常数据:后端:使用的是spring-cloud框架,在gateway模块进行操作<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version>......
  • Java魔板游戏软件(含代码)
    ✅作者简介:2022年博客新星第八。热爱国学的Java后端开发者,修心和技术同步精进。......
  • JavaWeb学习笔记,关于HTML的入门标签及属性
    一.HTML入门结构标签以及特点   以上标签即为HTML的入门标签,包括了HTML的基本框架结构标签以及部分常用标签,需要注意的是,HTML的语法松散,但我们更要严格要求自己,使用正常符合要求的代码格式,以免后期出现错误而无法及时发现问题,值得提起的还有,<h1>到<h6>是HTML中预定义好......
  • Java教程:入门基础【十万字详解】
    ✨博客主页:https://blog.csdn.net/m0_63815035?type=blog......
  • JAVA基础语法(一)
    1.功能的最小单元(1)功能的最小单位是一个一个方法。2.注释(1)单行注释格式://注释文字(2)多行注释格式:/*注释文字*/(3)被注释的文字不会被JVM解释执行,多行注释不能嵌套(4)由于编码问题导致编译失败(设置环境变量JAVA_TOOL_OPTLONS-Dfile.encoding=UTF-8)eg:3.字面量(1)e......
  • Python和MATLAB(Java)及Arduino和Raspberry Pi(树莓派)点扩展函数导图
    ......
  • java final关键字语法
    一、final类和方法英文文档原文:Java官方文档->WritingFinalClassesandMethodsYoucandeclaresomeorallofaclass'smethodsfinal.Youusethefinalkeywordinamethoddeclarationtoindicatethatthemethodcannotbeoverriddenbysubclasses.TheObje......