首页 > 编程语言 >java笔记5

java笔记5

时间:2024-08-06 09:40:34浏览次数:11  
标签:java 实现 void 接口 抽象 笔记 抽象类 public

9.抽象类与接口

抽象类

抽象类的概念

抽象类是面向对象编程中不能被实例化的一种类,它通常被用作基类,为其他类提供公共的接口或实现。

什么是抽象

抽象是将现实世界中的复杂事物简化为基本特征的过程,它关注对象的本质特征,忽略细节,只说明做什么,不说明怎么做。

为什么要抽象

  • 抽象帮助我们理解和组织复杂的系统,通过定义共同的属性和行为,减少代码冗余。

抽象类的好处

  • 促进代码复用。
  • 提供公共的模板或蓝图。
  • 支持扩展和定制。

抽象类,普通类,接口的区别

  • 抽象类可以包含抽象方法和具体方法,可以有成员变量;不能被实例化。
  • 普通类可以完全实现,包含具体的方法和成员变量,可以被实例化。
  • 接口完全是抽象的,只包含抽象方法和默认方法,不包含成员变量;从Java 8开始,接口可以有静态方法和默认方法。

接口

接口的概念

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

什么是接口

接口是一种形式的契约,规定了实现类必须遵守的方法和行为。

为什么要接口

  • 接口提供了一种机制,允许定义方法的规范而不需要实现它们,增加了代码的灵活性和可扩展性。

接口的好处

  • 支持多态,不同的类可以实现同一个接口。
  • 增加了代码的模块化,易于维护和扩展。
  • 允许不同的类以统一的方式交互。
  • 可以用于间接实现多重继承
  • 接口可以使设计与实现分离

接口和多态的关系

  • 接口是实现多态的一种机制。通过接口,可以引用多种实际类型的对象,而调用的具体实现取决于对象的实际类型。
  • 接口允许将不同的实现细节隐藏在统一的接口之后,使得代码更加通用。

示例代码

// 抽象类的示例
abstract class Animal {
    // 抽象方法,没有具体实现
    public abstract void makeSound();

    // 具体方法,有实现
    public void breathe() {
        System.out.println("This animal breathes air.");
    }
}

// 接口的示例
interface Drivable {
    void drive();
}

// 实现接口的类
class Car implements Drivable {
    public void drive() {
        System.out.println("The car is driving.");
    }
}

// 使用抽象类和接口
public class Main {
    public static void main(String[] args) {
        // 抽象类不能被实例化
        // Animal myAnimal = new Animal(); // 错误

        // 继承抽象类的子类
        class Dog extends Animal {
            public void makeSound() {
                System.out.println("Woof woof!");
            }
        }

        Dog dog = new Dog();
        dog.breathe();
        dog.makeSound();

        // 实现接口的Car对象
        Car myCar = new Car();
        myCar.drive();
    }
}

标签:java,实现,void,接口,抽象,笔记,抽象类,public
From: https://www.cnblogs.com/cjsbx/p/18344499

相关文章

  • 2024,Java开发在中国市场还有发展前景吗?
    随着2024年的到来,Java作为一种经典而强大的编程语言,依然在中国的软件开发市场中扮演着重要角色。然而,许多人对Java的未来发展前景持有不同的看法。让我们来探讨一下当前情况和未来的走向。Java程序员真的过剩了吗?2023年,各大求职网站上的java职位数量相对于其他技术岗位来......
  • Java之类和对象
    目录static关键字1修饰属性2修饰方法 final构造方法基本语法this关键字代码块定义普通代码块 构造代码块静态代码块匿名对象toString 总结static关键字1修饰属性Java的静态属性和类相关,和具体的实例无关.换句话说,同一个类的不同实例共用同一个静......
  • Java调用Linux命令行SpringBoot
    原文链接:https://blog.csdn.net/u014628771/article/details/108308337需求在Linux服务器上的SpringBoot程序中,调用gitclone,之后遍历git仓库中的所有文件。遍历git仓库可以使用File类实现,现在的问题是需要在SpringBoot程序中调用gitclone命令。实现方式使用Javanative的Proc......
  • 基于Java中的SSM框架实现在线音乐网站系统项目【项目源码+论文说明】
    基于Java中的SSM框架实现在线音乐网站系统演示摘要本文讲述了使用JSP语言及HTML5语言及MySql数据库技术开发的音乐网站的设计与实现。本文所讲的JSP音乐系统是通过所学的知识创办一个类似于QQ音乐或者酷狗音乐性质的网站平台,使所有对国内外音乐欣赏感兴趣的人都可以不必再......
  • Apache Flink开发时选择Java还是Scala作为编程语言
    在ApacheFlink的开发过程中,选择Java还是Scala作为编程语言是一个重要的决策点。这两种语言各有其独特的优势和特点,适合不同的开发场景和需求。以下是对这一选择的详细探讨,旨在帮助开发者更好地理解并做出合理的选择。一、ApacheFlink简介ApacheFlink是一个开源的分布式......
  • 【Java基础】03选择结构
    if分支ifif(条件){代码块;}if...else...if(条件){代码块1;}else{代码块2;}if...elseif...else...if(条件1){代码块1;}elseif(条件2){代码块2;//elseif可以写多个}else{代码块3;//else可以省略不写}if嵌套if(条件1){......
  • 【TS】 TypeScript声明文件:打通JavaScript和TypeScript的桥梁
     TypeScript声明文件的讲解: TypeScript声明文件(DeclarationFile)在TypeScript项目中具有举足轻重的地位,它是连接TypeScript严格的类型系统与外部无类型或类型不明确的JavaScript代码的关键纽带。 声明文件的核心价值在于为TypeScript编译器提供必要的类型信息......
  • 【Java数据结构】---初始数据结构
    乐观学习,乐观生活,才能不断前进啊!!!我的主页:optimistic_chen我的专栏:c语言,Java欢迎大家访问~创作不易,大佬们点赞鼓励下吧~前言从今天开始我们就要学习Java的数据据结构部分,根据前面Java语法的基础上,更加深入的了解算法的基本知识。文章目录前言什么是数据结......
  • 【学习笔记】线段树应用
    【学习笔记】线段树应用标题用##,说明太水啦~主要是以一些题目为例谈谈线段树的一些拓展用法,感觉线段树很神!P2146[NOI2015]软件包管理器树剖+线段树树剖+线段树板子,这种树剖的题只是加了个树剖的壳把它转换为区间问题罢了。至于为什么,这里弱弱的引用神......
  • 解决Maven Deploy时提示module java.base does not "opens java.util" to unnamed mod
    使用Maven向中央仓库推送项目时,遇到Unabletomakefieldprivatefinaljava.util.Comparatorjava.util.TreeMap.comparatoraccessible:modulejava.basedoesnot"opensjava.util"tounnamedmodule的错误提示。网上搜了下,大概是因为自Java9起,引入了模块系统(ProjectJig......