详解Java中的封装、继承、多态

我来详细讲解一下Java中的封装、继承和多态。

封装

封装是一种面向对象编程的概念,它在Java中的实现是使用类和访问控制修饰符来保护数据和行为的访问权限。封装可以让设计者隐藏类的实现细节,将类的接口与实现分离,提高代码的复用性和安全性。

在Java中,我们可以使用public、private、protected和default修饰符来控制访问权限。其中,public表示公开的,任何人都可以访问;private表示私有的,只有类内部可以访问;protected表示受保护的,只有该类的子类和同一包下的类可以访问;default表示默认的,只有同一包下的类可以访问。

下面是一个示例,演示了如何使用封装来保护数据:

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

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

    public void setAge(int age) {
        this.age = age;
    }
}

public class Main {
    public static void main(String[] args) {
        Person p = new Person("Tom", 18);
        System.out.println(p.getName());  //可以访问
        p.setName("Jerry");  //可以访问
        p.setAge(-1);  //无法访问,因为age是私有的
    }
}

继承

继承是一种面向对象编程的概念,它允许我们基于已有的类创建新的类,并从原来的类继承所有的字段和方法。继承可以大大简化代码的创建和管理,提高代码重用性。

在Java中,我们使用extends关键字来实现继承。子类继承父类的所有public和protected成员,私有的成员不能被继承。子类可以重写/覆盖父类的方法,也可以新添加自己的方法和属性。

下面是一个示例,演示了如何使用继承来实现一个基础的形状类:

public class Shape {
    protected double area;

    public void calculateArea() {
        //计算面积
    }

    public void printArea() {
        System.out.println("面积是:" + area);
    }
}

public class Rectangle extends Shape {
    private double length;
    private double width;

    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }

    public void calculateArea() {
        area = length * width;
    }
}

public class Main {
    public static void main(String[] args) {
        Rectangle r = new Rectangle(3, 4);
        r.calculateArea();
        r.printArea();
    }
}

多态

多态是一种面向对象编程的概念,它允许我们使用父类类型的引用来引用子类类型的对象,从而实现代码的灵活性和可扩展性。在Java中,多态具体有两种实现方式:方法重载和方法覆盖。

方法重载是指在同一个类中,可以定义多个方法名相同,但参数类型/个数/顺序不同的方法。Java编译器会根据不同的参数来自动选择不同的方法。

方法覆盖是指在子类中重载父类的方法。子类中重新定义与父类中同名、参数数量类型完全相同的方法,这种方法覆盖即为覆盖。

下面是一个示例,演示了如何使用多态来实现不同形状的面积计算:

public class Shape {
    protected double area;

    public void calculateArea() {
        //计算面积
    }

    public void printArea() {
        System.out.println("面积是:" + area);
    }
}

public class Rectangle extends Shape {
    private double length;
    private double width;

    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }

    public void calculateArea() {
        area = length * width;
    }
}

public class Circle extends Shape {
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    public void calculateArea() {
        area = Math.PI * radius * radius;
    }
}

public class Main {
    public static void main(String[] args) {
        Shape s1 = new Rectangle(3, 4);
        s1.calculateArea();
        s1.printArea();

        Shape s2 = new Circle(2.5);
        s2.calculateArea();
        s2.printArea();
    }
}

以上就是Java中封装、继承、多态的详细讲解和示例,请仔细学习。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java中的封装、继承、多态 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 如何批量删除Excel2007中的文本和控件对象

    批量删除Excel2007中的文本和控件对象,可以通过以下步骤完成: 步骤一:进入编辑模式 首先,打开Excel 2007文档并进入编辑模式。可以通过双击文档中需要编辑的单元格或右键单击该单元格并选择“编辑”选项进入编辑模式。 步骤二:选择需要删除的文本和控件对象 在编辑模式下,选择需要删除的文本和控件对象。可以通过按住鼠标左键并拖动来选择一个区域的文本或控…

    other 2023年6月26日
    00
  • iOS实现消息推送及原理分析

    iOS实现消息推送及原理分析 什么是消息推送? 消息推送是指在无需打开应用程序的情况下,向手机用户发送通知消息。消息推送可以通过苹果官方提供的APNs(Apple Push Notification service,苹果推送服务)完成。 APNs的工作原理 APNs与苹果设备之间的通信是基于一种专门为该服务设计的二进制协议,这个协议被称为APNs协议。APN…

    other 2023年6月26日
    00
  • java对象克隆实现方法详解

    Java对象克隆实现方法详解 对象克隆是指创建一个与原始对象具有相同状态的新对象。在Java中,可以使用不同的方法实现对象克隆。以下是关于Java对象克隆的详细攻略。 方法一:实现Cloneable接口 在需要克隆的类中实现Cloneable接口,该接口是一个标记接口,没有任何方法。 重写Object类的clone()方法,并将访问修饰符改为public。 …

    other 2023年10月15日
    00
  • springBoot解决static和@Component遇到的bug

    Spring Boot解决Static和@Component遇到的Bug攻略 在使用Spring Boot开发应用程序时,有时会遇到Static资源和@Component注解的一些常见问题。这些问题可能导致静态资源无法正确加载或@Component注解无法正常工作。下面是解决这些问题的完整攻略。 问题1:Static资源无法加载 问题描述 当使用Spring…

    other 2023年8月6日
    00
  • 小米cc9如何重启到恢复模式?小米cc9重启到恢复模式的方法

    小米CC9是一款很不错的手机,但是有时候用户会遇到一些问题需要通过重启到恢复模式来解决,比如系统出现问题或者需要进行刷机等操作。下面就是小米CC9如何重启到恢复模式的完整攻略。 准备工作 在进入恢复模式之前,需要确保手机已经开启了USB调试模式。 步骤如下: 在手机上找到设置-> 关于手机-> 点击版本号七次开启开发者选项。 返回设置主界面,进入…

    other 2023年6月27日
    00
  • git入门教程之删除文件

    git入门教程之删除文件 在使用Git进行版本控制时,有时需要删除文件。本文将详细介绍如何使用Git删除文件,包括删除本地文件和远程文件。 删除本地文件 以下是删除本地文件的步骤: 打开终端或命令行窗口,进入要删除文件所在的Git仓库目录。 运行以下命来删除文件: git rm filename 其中,filename是要删除的文件名。 运行以下命令来提交删…

    other 2023年5月7日
    00
  • CentOS7和CentOS6有什么不同呢?

    CentOS是一款流行的Linux操作系统,其中包括了许多版本。CentOS6和CentOS7在系统架构和功能上有很多不同之处。 CentOS 7和CentOS 6的区别 1. 系统架构 CentOS6采用的是Linux内核版本为2.6.x,而CentOS7采用的是Linux内核版本为3.x。这意味着CentOS7在安全性、性能等方面都更加优化。 2. 命令…

    other 2023年6月27日
    00
  • 电脑鼠标左右键如何切换

    电脑鼠标左右键如何切换主要是指在使用鼠标时,如何切换鼠标的左右按键功能。在Windows系统中,默认情况下,鼠标左键用于选中和执行任务,而鼠标右键用于打开快捷菜单。但是,有时候需要我们将左右键功能进行切换,比如针对左撇子用户。 下面是详细的攻略: 方法一:更改鼠标底部按钮设置 首先,打开“控制面板”,然后找到“硬件和声音”选项 在“设备和打印机”下找到鼠标,…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部