浅谈java面向对象(类,封装,this,构造方法)

浅谈Java面向对象

在Java中,类可看做是一个数据类型,它包含了数据和方法。数据称为类的属性,而方法则是类的行为。

在代码实现中,通过使用关键字“class”来定义一个类,类的命名应遵循驼峰命名法。下面是一个简单的类的定义示例:

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

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

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

    public String getName() {
        return this.name;
    }

    public int getAge() {
        return this.age;
    }
}

封装

封装是面向对象编程的一种重要特性,它是指将数据和方法进行封装,隐藏数据的具体实现方式,仅对外提供必要的公共接口。

在Java中,可以通过访问修饰符来控制类的数据与方法的访问权限。常用的访问修饰符有public、protected、default和private。

其中,public修饰符表示该成员可以被所有类访问,protected修饰符表示该成员可以被本类、子类和同一个包中的类访问,default修饰符表示该成员可以被本类、同一个包中的类访问,而private修饰符表示该成员只能被本类访问。

在上面定义的Person类中,name和age属性被定义成了private私有修饰符,只有该类内部的方法才能访问这些属性值。而将setter和getter方法定义为public,可以在类外部访问这些属性值。

this

在Java中,this关键字表示当前对象的引用,它指向正在调用该方法的对象。

在构造方法中,this关键字可以用于调用当前类的其它构造方法,以避免重复代码的编写。如下面的例子所示:

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

    public MyClass(String name) {
        this(name, 18);
    }

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

在上面的代码中,MyClass类有两个构造方法,当调用第一个构造方法时,它会调用第二个构造方法,并将age参数的默认值设为18。

构造方法

在创建一个对象时,构造方法会被调用,用于初始化对象的属性值。在Java中,构造方法的命名必须与类名相同,不能有返回值,可以有参数。

如下面的代码所示,Person类有一个有参数的构造方法,用于初始化name和age属性的值。

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

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

当创建一个Person对象时,可以在括号内传入相应的参数,如下所示:

Person person = new Person("张三", 20);

在该示例中,会调用Person类的有参数的构造方法,将“张三”和20分别赋值给name和age属性。

示例说明

示例1:定义一个Rectangle类,实现长方形的面积和周长计算功能。

public class Rectangle {
    private double width;
    private double height;

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

    public double area() {
        return this.width * this.height;
    }

    public double perimeter() {
        return 2 * (this.width + this.height);
    }
}

在上面的代码中,Rectangle类有两个属性width和height,分别表示长方形的宽和高。它有一个有参数的构造方法,用于初始化这两个属性值。它也有两个方法area和perimeter,分别用于计算长方形的面积和周长。

示例2:定义一个Student类,包含姓名、年龄、性别和学号等属性,实现这些属性的getter和setter方法。

public class Student {
    private String name;
    private int age;
    private char gender;
    private String id;

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

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

    public void setGender(char gender) {
        this.gender = gender;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public int getAge() {
        return this.age;
    }

    public char getGender() {
        return this.gender;
    }

    public String getId() {
        return this.id;
    }
}

在上面的代码中,Student类有四个属性name、age、gender和id,分别表示学生的姓名、年龄、性别和学号。它有对应的setter和getter方法,用于设置和获取这些属性值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈java面向对象(类,封装,this,构造方法) - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • SpringBoot整合mybatis常见问题(小结)

    针对SpringBoot整合mybatis常见问题,我整理了以下攻略。 一、问题背景 1.1 spring boot整合mybatis报错 经常会出现spring boot整合mybatis后报错的情况,比如找不到mapper文件、无法注入mapper bean等等。 1.2 解决方案 下面我将介绍两种解决方案: 方案一:配置mapper文件路径 对于找不到…

    Java 2023年5月15日
    00
  • 详解 Java中日期数据类型的处理之格式转换的实例

    下面是详解Java中日期数据类型的处理之格式转换的实例的完整攻略。 前言 在Java中,常用的日期数据类型有java.util.Date和java.time.LocalDateTime等。在处理日期时,我们有时需要把日期按照一定的格式进行转换,例如将2022-01-01转换成2022年01月01日。本文将对Java中日期格式转换进行详细讲解,并提供具体的代码…

    Java 2023年5月20日
    00
  • Java实现将数字日期翻译成英文单词的工具类实例

    Java实现将数字日期翻译成英文单词的工具类实例,可以帮助我们将数字日期转换成更易于阅读和理解的英文单词格式。下面我来详细讲解该实现的完整攻略: 1. 准备工作 首先,我们需要创建一个Java工程,将代码存放在该工程中。在工程中创建一个名为DateUtil的工具类,用于实现数字日期翻译成英文单词的功能。 2. 定义工具类 在DateUtil工具类中,我们需要…

    Java 2023年5月19日
    00
  • 详解Maven命令大全

    下面我将详细讲解“详解Maven命令大全”的完整攻略。 一、Maven命令简介 Maven是一个用于Java项目的构建和管理工具。它利用POM(Project Object Model)来描述项目,可以管理项目的构建、输出、文档、报告以及依赖等。下面是Maven常用的一些命令。 1. mvn clean 清除Maven项目工程的目录,删除target目录下的…

    Java 2023年5月20日
    00
  • 如何在java 8 stream表达式实现if/else逻辑

    在Java 8中,Stream API已成为编写更具可读性和功能性的代码的核心。 在Stream API中实现if/else逻辑可以使用filter()和forEach()方法配合完成。 在filter()中我们可以输入lambda表达式作为参数,作为逻辑判断的条件。而在forEach()中,我们可以输入lambda表达式来处理符合条件的流。 下面为你提供两…

    Java 2023年6月15日
    00
  • 实例解析JSP中EL表达式的各种运用

    实例解析JSP中EL表达式的各种运用 在JSP页面中,EL表达式是非常常用的一种语法,用于简化代码的编写,提高代码的可读性。本文将详细讲解在JSP中EL表达式的各种运用。 EL表达式的基本语法 EL表达式用${}符号包裹,可以直接在JSP页面中使用。EL表达式的语法格式为${表达式},其中表达式可以是变量、运算符、方法调用等。 变量的使用 EL表达式可以用于…

    Java 2023年6月15日
    00
  • JavaSpringBoot报错“InternalServerErrorException”的原因和处理方法

    原因 “InternalServerErrorException” 错误通常是以下原因引起的: 代码逻辑问题:如果您的代码逻辑存在问题,则可能会出现此错误。在这种情况下,需要检查您的代码逻辑并确保它们正确。 依赖库问题:如果您的依赖库存在问题,则可能会出现此错误。在这种情况下,需要检查您的依赖库并确保它们正确。 环境配置问题:如果您的环境配置存在问题,则可能…

    Java 2023年5月4日
    00
  • SpringBoot Mybatis 配置文件形式详解

    讲解 “SpringBoot Mybatis 配置文件形式详解” 的完整攻略如下: 1. 概述 Spring Boot 是 Spring Framework 的一种快速开发框架,可以用于 Java 开发的各种 Web 应用程序的快速开发。MyBatis 是一种持久层框架,可以用于与数据库交互的对象映射。本文介绍了如何使用 MyBatis 在 Spring B…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部