首页 > 编程语言 >Java面向对象编程(OOP)的四个主要特征

Java面向对象编程(OOP)的四个主要特征

时间:2024-09-19 10:48:26浏览次数:9  
标签:Java 面向对象编程 void Dog class 多态 OOP Animal public

目录

1. 封装 (Encapsulation):

2. 继承 (Inheritance):

3. 多态 (Polymorphism):

4. 抽象 (Abstraction):


Java面向对象编程(OOP)有四个主要特征:封装继承多态抽象。这些特性是 OOP 的核心概念,帮助构建灵活、可维护的代码结构。

1. 封装 (Encapsulation):

封装是将对象的属性(变量)和行为(方法)绑定在一起,并对外界隐藏其内部实现细节。通过将类的属性声明为私有 (private),并通过公共的访问方法(getterssetters)来控制对这些属性的访问,封装可以提高代码的安全性和可维护性。

public class Person {
    private String name;  // 私有属性,只能通过getter和setter访问

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2. 继承 (Inheritance):

继承允许一个类继承另一个类的属性和方法,从而实现代码复用。子类可以继承父类的所有属性和方法,并且可以重写(override)父类的方法,也可以添加自己独特的功能。继承关系通过 extends 关键字实现。

public class Animal {
    public void eat() {
        System.out.println("Animal is eating");
    }
}

public class Dog extends Animal {
    public void bark() {
        System.out.println("Dog is barking");
    }
}

3. 多态 (Polymorphism):

多态性指的是同一行为在不同对象中的不同表现。Java 支持两种多态形式:编译时多态(方法重载)和 运行时多态(方法重写)。运行时多态是通过父类引用指向子类对象实现的,方法的具体实现由运行时决定。

public class Animal {
    public void sound() {
        System.out.println("Animal makes a sound");
    }
}

public class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("Dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Dog();  // 父类引用指向子类对象
        myAnimal.sound();  // 输出: Dog barks
    }
}

4. 抽象 (Abstraction):

抽象通过隐藏对象的实现细节,只暴露出必要的功能给用户。Java 通过 抽象类接口 来实现抽象。抽象类可以包含具体实现的方法,而接口则只定义方法的签名,具体实现由实现类提供。

abstract class Animal {
    public abstract void sound();  // 抽象方法,无具体实现
}

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("Dog barks");
    }
}

这四个特征使得 Java 能够实现模块化、可扩展、灵活的代码设计,是面向对象编程的核心理念。

标签:Java,面向对象编程,void,Dog,class,多态,OOP,Animal,public
From: https://blog.csdn.net/LLZjiayou/article/details/142354474

相关文章

  • Hadoop(十八)MapReduce Shuffle机制
    MapReduce工作流程上面的流程是整个MapReduce最全工作流程,但是Shuffle过程只是从第7步开始到第16步结束,具体Shuffle过程详解,如下:MapTask收集map()方法输出的kv对,放到内存缓冲区中从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件多个溢出文件会被合并成大的溢出文件在......
  • vue打包优化——使用webpack-parallel-uglify-plugin并行压缩JavaScript
    1、安装插件npminstallwebpack-parallel-uglify-plugin--save-dev我用的install命令,其他命令大同小异,大家百一下就行2、配置vue.config.js首先引入插件:constParallelUglifyPlugin=require('webpack-parallel-uglify-plugin');这里注意我用的vue-cli构建的项目,所以修改w......
  • Hadoop(十七)MapReduce 切片机制 InputFormat
    切片与MapTask并行度决定机制MapTask的并行度决定Map阶段的任务处理并发度,进而影响到整个Job的处理速度数据块:Block是HDFS物理上把数据分成一块一块,数据块是HDFS存储数据单位数据切片:数据切片只是在逻辑上对输入进行分片,并不会在磁盘上将其切分成片进行存储,数据切片是MapReduc......
  • 「Java开发指南」如何用MyEclipse搭建Adobe和Spring Flex?(二)
    本教程将引导您完成AdobeFlex和Spring-Flex软件组件的生成,可以生成一个随时可运行的SpringFlex应用程序,该应用程序为域模型实现了CRUD应用程序模式。在本教程中,您将学习如何:从数据库表搭建到现有项目设置关系获取类型更新Flex用户界面自定义Spring代码生成需要MyEclipseS......
  • Java Web处理HTTP请求并返回响应
    在JavaWeb开发中,处理HTTP请求并返回响应是常见的任务。本文将深入探讨如何使用Java来构建一个健壮的响应机制,特别是针对返回值的处理。我们将从最基本的Servlet开始,逐步过渡到使用SpringBoot框架来实现更复杂的响应逻辑。同时,本文将包含示例代码,以便读者能够更好地理解每个概念。......
  • Java项目实战II基于Java+Spring Boot+MySQL的大学城水电管理系统(源码+数据库+文档)
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言前随着高等教育的快速发展,大学城作为集中......
  • Java项目实战II基于Java+Spring Boot+MySQL的大型商场应急预案管理系统(源码+数据库+
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言在快节奏的现代都市生活中,大型商场作为城......
  • Java关键字详解:构建Java语言的基础元素
    Java是一门静态类型、面向对象的编程语言,其基础构建块由一系列关键字(keywords)构成。这些关键字具有特定的功能和含义,定义了Java语言的结构和语法规则。Java关键字在编译时具有特殊意义,开发者不能将其用作变量、类或方法名。本文将详细解析Java中的关键字及其用途,并结合代码......
  • JavaScript:let与 var的细微差别
    1、什么是"let"和"var"?在JavaScript中,"let"和"var"都是用来声明变量的关键字,但它们的作用范围和行为却有着显著的不同。2、作用范围的差异"var"声明的变量拥有函数级别的作用范围。也就是说,当你在一个函数中使用"var"声明变量,这个变量在整个函数内都是可见的。即使在声明之前的......
  • test.c:12:17: error: break statement not within loop or switch
     001、[root@localhosttest]#lstest.c[root@localhosttest]#cattest.c#include<stdio.h>intmain(void){inti;printf("i=");scanf("%d",&i);if(i>0){puts(&qu......