首页 > 编程语言 >四,Java面向对象

四,Java面向对象

时间:2024-10-15 18:23:03浏览次数:1  
标签:Java name 构造方法 private 面向对象 重载 public

Java面向对象:封装与构造方法笔记

封装

  • private关键字:

    • 概述: private是Java中的访问修饰符,用于隐藏类的内部细节,只通过公共方法(public)提供访问。
    • 特点: 使用private修饰的成员变量或方法只能在同一个类内部访问,不能被类的外部直接访问。
    • 使用方式:
      • 成员变量: this.成员变量名,用于区分成员变量和方法参数同名的情况。
      • 构造方法: this(参数列表),用于在一个构造方法中调用另一个构造方法,实现构造方法的重载。
      • 成员方法: this.成员方法名(参数列表),虽然不常见,但在某些情况下可以用来调用当前对象的其他方法。
  • this关键字:

    • 概述: this关键字指向当前对象的引用,可以用来访问当前对象的属性和方法。
    • 使用场景:
      • 区分成员变量和局部变量(参数)同名时。
      • 在构造方法中调用另一个构造方法(构造方法重载)。
  • 重载(Overloading):

    • 概述: 在同一个类中创建多个同名方法,但参数列表不同(参数类型、个数或顺序不同)。
    • 特点: 重载与方法的返回类型无关,仅与参数列表有关。

构造方法

  • 概述: 构造方法是一种特殊的方法,用于创建对象时初始化对象的状态。
  • 特点:
    1. 构造方法名必须与类名完全相同。
    2. 构造方法没有返回类型,连void都不能有。
    3. 如果没有显式定义构造方法,Java虚拟机(JVM)会提供一个默认的无参构造方法。
    4. 可以定义多个构造方法,实现构造方法的重载,以支持不同的初始化方式。

示例代码

public class Person {
    private String name; // 私有成员变量
    private int age;

    // 无参构造方法
    public Person() {
    }

    // 带参构造方法
    public Person(String name, int age) {
        this.name = name; // 使用this区分成员变量和参数
        this.age = age;
    }

    // 成员方法
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    // 重载方法示例
    public void display() {
        System.out.println("Name: " + name + ", Age: " + age);
    }

    public void display(String message) {
        System.out.println(message + " Name: " + name + ", Age: " + age);
    }
}

总结

  • 封装是面向对象编程的核心概念之一,通过private关键字实现对类内部状态的隐藏,通过this关键字访问当前对象的成员。
  • 重载是Java中一种多态的实现方式,允许在同一个类中定义多个同名方法,但参数列表必须不同。
  • 构造方法用于创建对象时初始化对象的状态,可以有多个构造方法(重载),也可以不显式定义,让JVM提供默认构造方法。

标签:Java,name,构造方法,private,面向对象,重载,public
From: https://www.cnblogs.com/bjynjj/p/18468145

相关文章

  • 前端原型链:探索 JavaScript 中的继承奥秘
    一、引言在前端开发领域,JavaScript是一门广泛应用的编程语言。而原型链作为JavaScript中一个重要的概念,对于理解JavaScript的面向对象特性和实现继承机制起着关键作用。它不仅影响着代码的组织和复用方式,还决定了对象之间的关系和属性访问规则。本文将深入探讨前端原型链......
  • 讨论java有基础类型,为什么还要有封装类型呢?两者之间的比较方式?
    java有哪些基础类型boolean/1byte/8char/16short/16int/32float/32long/64double/64java为什么有基础类型,为什么还要有封装类型呢?举个例子吧,Character和char的区别是在于char只是存了个数据,而Character的区别在于他带有了一系列操作该数据的方法好处是什么呢?......
  • Java 初学 day 08
    java081、Abstract关键字java为了表示现实生活中抽象的概念集合,提供了一个关键字给我们使用:abstractabstract抽象的可以修饰类,修饰成员方法1.被abstract修饰的类是抽象类,抽象类不能被实例化2.被abstract修饰的方法是抽象方法,抽象方法不能有大括号实现3.在抽......
  • java 不建议使用stack
    Java不建议使用Stack的原因和替代方案在Java编程中,Stack类通常用于处理数据结构中的堆栈实现。然而,随着Java的发展,越来越多的开发者开始质疑是否应该继续使用Stack类。本文将探讨不建议使用Stack的原因,示例代码,以及推荐的替代方案。Stack类简介在Java中,Stack是一种后进先出(LIFO......
  • Java在for循环中修改集合
    前天看到一篇文章什么?for循环也会出问题?,里面涉及到在for循环中修改集合,想起来自己刚入行的时候就碰到过类似的问题,于是复现了一下文章中的问题,并试验了其它在循环中修改集合的方法。底层原理参考什么?for循环也会出问题?这篇文章的分析1.在fori中修改集合在fori中修改集合,不会......
  • java计算机毕业设计智能点餐推荐系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着科技的飞速发展,人们的生活节奏日益加快,对餐饮服务的需求也愈发多样化和个性化。传统的点餐方式往往依赖于纸质菜单或简单的电子菜单,难以满足现代......
  • Java在for循环中修改集合
    在Java中,ifPresent是一个用于Optional类型的方法,用于检查Optional对象中是否存在值并执行相应的操作。ifPresent方法接受一个Consumer函数式接口作为参数,如果Optional对象中包含值,则将该值传递给Consumer接口的实现方法。以下是ifPresent方法的使用示例:importj......
  • 软件开发----Java基础每日刷题(转载于牛客)
    1.        A 是抽象父类或接口, B , C 派生自 A ,或实现 A ,现在 Java 源代码中有如下声明:1. A a0=new A();2. A a1=new B();3. A a2=new C();问以下哪个说法是正确的?()A        第1行不能通过编译B        第1、2行能通......
  • Java 时间格式转换详解
    在Java开发中,时间和日期的处理是非常常见的需求。无论是用户输入的时间数据,还是系统生成的时间戳,我们经常需要对其进行格式化或解析。本文将详细介绍如何在Java中进行时间格式的转换,并分别介绍两种主要的方法:SimpleDateFormat(适用于Java8之前)和 java.time(适用于Java8......
  • JavaSE JAVA基础总结(一) 我的学习笔记
    JavaSEJAVA基础总结(一)一、Java基础语法1.数据类型2.运算符3.选择结构4.循环结构5.数组6.方法7.递归二、面向对象1.面向对象编程(1)为什么要学习面向对象(2)面向过程与面向对象区别(3)对象(4)类(5)成员变量与局部变量的区别(6)构造器(7)this的关键字(8)标准JavaBean(9)静态关键字:static......