浅谈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日

相关文章

  • Java Struts图片上传至指定文件夹并显示图片功能

    下面是详细讲解Java Struts图片上传至指定文件夹并显示图片功能的完整攻略: 1. 概述 本文将介绍如何在Java Struts框架下实现图片上传至指定文件夹并显示图片的功能。在实现过程中,我们将使用commons-fileupload和commons-io等第三方库来实现图片上传,通过Struts的Action来处理上传请求,并将上传的图片保存至指定…

    Java 2023年5月20日
    00
  • 图文详解Java线程和线程池

    图文详解Java线程和线程池 什么是线程 线程是操作系统能够进行运算调度的最小单位。一个进程可以包含多个线程,线程共享进程资源,但是是CPU分配资源的独立单位。 Java中的线程 Java中的线程是使用Thread类对象来创建。Java中的线程有以下几种状态:新建状态、可运行状态、阻塞状态和死亡状态。在Java中,实现多线程有两种方式,一是继承Thread类…

    Java 2023年5月18日
    00
  • Java实现按行分割大文件

    以下是Java实现按行分割大文件的完整攻略,包含步骤、代码示例和输出结果。 步骤一:准备工作 首先,需要导入Java中的IO包,以便读取和处理文件。 import java.io.*; 接着,需要定义一个方法来实现按行分割文件,命名为splitByLine。 public static void splitByLine(String fileName, in…

    Java 2023年5月20日
    00
  • nginx lua集成kafka的实现方法

    下面我将为你详细讲解“nginx lua集成kafka的实现方法”的完整攻略。 准备工作 安装Openresty 安装kafka 代码实现 安装kafka-lua kafka-lua具体安装步骤可参考Github官网:kafka-lua。 lua代码基本骨架 local producers = require ("resty.kafka.produ…

    Java 2023年5月20日
    00
  • java分布式面试系统限流最佳实践

    针对Java分布式面试系统的限流最佳实践,我将分享以下攻略: 1. 需求调研与场景分析 首先,你需要了解你的系统在什么场景下存在限流的需求,例如有哪些接口需要限流、在什么情况下需要限流等等。在这个阶段中,你需要和业务对接人员进行沟通,了解产品的最大承载量、是否需要分区以及不同区之间的流量比例等。 2. 选择限流算法 常见的限流算法有令牌桶算法、漏桶算法以及计…

    Java 2023年5月24日
    00
  • JSP 获取spring容器中bean的两种方法总结

    介绍JSP和Spring容器 JavaServer Pages(JSP)是一种在服务器上使用的Java技术,用于创建动态Web页面。Spring容器是一个轻量级的Java开发框架,用于协调Java应用中的对象和实现应用程序中不同层之间的松耦合。 JSP获取Spring容器中Bean的两种方法 Spring容器中的Bean可以被JSP使用,JSP可以通过以下两…

    Java 2023年6月16日
    00
  • struts1之简单mvc示例_动力节点Java学院整理

    介绍 本文将介绍如何使用Struts 1框架通过一个简单的MVC示例进行开发。本示例是基于动力节点Java学院整理的教学资料。 环境准备 在开始开发之前,需要准备好以下环境: Java Development Kit (JDK) 1.8或以上 Eclipse IDE for Java EE Developers Tomcat 8.5或以上 Struts 1.…

    Java 2023年5月20日
    00
  • SpringBoot使用阿里OSS实现文件云存储的方法

    下面是“SpringBoot使用阿里OSS实现文件云存储的方法”的完整攻略。 一、前置条件 在开始之前,需要先获取一个阿里云OSS账号,并创建一个Bucket用于存储文件。同时在本地安装好SpringBoot环境和Maven。 二、导入依赖 首先,在pom.xml文件中添加阿里云OSS依赖: <dependency> <groupId&gt…

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