JAVA基础知识之面向对象!
发布日期:2025-04-03 00:53:55 浏览次数:9 分类:精选文章

本文共 2422 字,大约阅读时间需要 8 分钟。

Java面向对象之封装与构造方法

面向对象编程中的封装和构造方法是Java的核心概念之一,它们在代码设计中起着重要作用。封装使代码更加安全和具有可维护性,而构造方法则是对象创建和初始化的基础。


一、封装

封装(Encapsulation)是面向对象编程的三大核心特征之一,通过将对象的属性和方法进行归纳,使外部代码无法直接访问对象的内部实现,从而提高代码的安全性和可控制性。

选修一:封装的好处

封装的好处主要体现在以下几个方面:

  • 将变化隔离:属性和方法的变化不影响其他代码模块。
  • 便于使用:用户只需通过提供的公共接口使用对象的功能,无需关心其内部实现。
  • 提高重用性:如果类的属性和方法设计得当,其他类可以轻松复用。
  • 安全性:外部代码无法直接访问对象的私有属性和方法。
  • 选修二:封装原则

    封装原则指的是将对象不需要公开的属性和方法完全隐藏,只对外公开一些方法(如getters和setters),供外部代码调用。封装原则是面向对象编程中第一定律,是开发者在设计类时必须遵循的基本规则。


    二、类的成员

    类是面向对象编程的核心单元,一个类中可以包含成员变量和方法。成员变量对应于事物的属性,方法对应于其行为。以下是类中可以定义的成员类型:

  • 成员变量:定义在类中,属于对象的属性。
  • 成员方法:定义在类中,属于对象的行为。
  • set和get函数:用于控制对象属性的访问和修改。
  • 其他一般函数:为完成特定任务而编写的功能方法。
  • 构造函数:用于创建和初始化对象。
  • 注意事项:类的命名应清晰反映其用途,首字母大写。

  • 三、构造函数

    构造函数(Constructor)是Java中用于创建对象的特殊方法,JVM在对象被创建时会自动调用构造函数进行初始化。以下是构造函数的写法和常见用法:

  • 限制条件:构造函数只能使用public、private等访问权限修饰符,不能使用static关键字。
  • 返回类型:构造函数没有返回值类型,且不能使用void。
  • 函数名:与类名一致。
  • 参数列表:可以定义任意类型和数量的参数。
  • 默认构造函数:没有手动编写的情况下,编译器会自动生成一个无参数的构造函数。
  • 例子:

    public class Student {
    private String name; // 私有属性,需要通过get和set方法访问
    public Student(String name) { // 自定义构造函数
    this.name = name; // 初始化对象属性
    }
    }

    四、对象的内存表示

    在Java中,对象的内存分为堆和栈两个部分:

  • 堆内存:存储对象本身的起始地址和其他对象引用。
  • 栈内存:存储方法调用的上下文,包括方法的返回地址和局部变量。
  • 对象是引用类型,对象引用存储在栈内存中,而对象本身的信息存储在堆内存中。


    五、关键字this

    this关键字在Java中有多种用途:

  • 指代当前类对象:可以在函数中强制指向本类的对象。
  • 区分同名变量和局部变量:避免命名冲突。
  • 调用本类构造函数:必须放在构造函数的第一行。
  • 示例:

    public class Employee {
    private String name;
    public Employee(String name) {
    // 这里使用this表示创建对象的本类引用
    this.name = name; // 初始化对象属性
    }
    }

    六、匿名对象

    匿名对象是一种没有名字的对象,只在需要的时候被创建和使用。匿名对象的优点是:

  • 只用一次:适合对某个对象只需要调用一次的场景。
  • 便于实现接口:可以直接传递给需要接口的方法。
  • 例子:

    Course course = new Course("编程基础");
    // 如果是匿名对象
    Course 匿名Course = new Course("匿名课程"); // 只能使用一次

    七、继承

    继承(Inheritance)是面向对象特征之一,通过extends关键字实现子类与父类的关系。下面是继承的核心概念和注意事项:

  • 子类和父类的关系:子类从父类继承所有属性和方法,为代码复用性提供了可能性。
  • 继承方式:如class A extends B,表示A继承自B。
  • 封装的重要性:在定义继承前,必须确定父和子类是否存在共同的属性和方法。
  • 注意事项:

    • 灵活性:不能随意改变父类的属性和方法。
    • 灵 ∃ broadcasters:避免继承初阶,只有逻辑上的继承满足A instanceof B

    八、多态

    多态(Polymorphism)是面向对象特征之一,通过方法的动态绑定实现不同对象对同一方法调用的不同行为。多态主要通过接口实现,下面是相关内容:

  • 接口定义:使用interface关键字定义接口,所有方法都是抽象的。
  • 接口实现:使用implements关键字实现接口中的方法。
  • 多继承:接口可以继承其他接口,类似于多继承。
  • 示例:

    interface Animal { // 接口定义
    void sound(); // 抽象方法
    }
    class Dog implements Animal { // 实现类
    @Override
    void sound() { // 实现抽象方法
    System.out.println("狗叫");
    }
    }
    // 多态应用
    Animal animal = new Dog();
    animal.sound(); // 调用Dog类的实现方法

    总结

    封装和构造方法是Java面向对象的核心概念,它们为开发者提供了更加高效和安全的编程方式。通过封装,代码实现得以保护,通过构造方法,对象的创建和初始化得以便捷化。对于更高级的概念(如继承和多态),理解它们的作用和使用场景是成为擅长Java编程的关键。

    上一篇:java基础知识整理
    下一篇:Kubernetes 的 taint(污点)与 toleration(容忍)

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2025年04月28日 17时46分20秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章

    JAVA-【1】配置 2025-04-01
    java-信息安全(九)-基于DH,非对称加密,对称加密等理解HTTPS 2025-04-01
    java-如何给表格添加分页 2025-04-01
    Java-环境搭建(Mac版) 2025-04-01
    Java-笔记12 2025-04-01
    java-设计模式-装饰器设计模式,代理设计模式和继承三种扩展方法的比较 2025-04-01
    java.io.IOException: Tried to send an out-of-range integer as a 2-byte value :79944 2025-04-01
    java.io.tmpdir 2025-04-01
    java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 2025-04-01
    java.lang.IllegalArgumentException: Control character in cookie value or attribute. 2025-04-01
    java.lang.IllegalArgumentException: Invalid character found in the request target. 2025-04-01
    java.lang.IllegalStateException: Optional int parameter 'id' is not present but cannot be translated 2025-04-01
    java.lang.NoClassDefFoundError: javax transaction SystemException 解决方法! 2025-04-01
    java.lang.NoClassDefFoundError: javax/persistence/EntityListeners解决 2025-04-01
    java.lang.NoClassDefFoundError: kotlin/reflect/jvm/internal/KotlinReflectionInternalError 2025-04-01
    java.lang.NoClassDefFoundError: org.joda.time.ReadablePeriod错误的处理 2025-04-01
    java.lang.NoClassDefFoundError: org/springframework/core/io/Resource 2025-04-01
    java.lang.NoSuchMethodError: org.jaxen.dom4j.DocumentNavigator.getInstance()【可能的解决办法】 2025-04-01
    java农业文化旅游管理平台(ssm) 2025-04-01
    java农副产品网上预订系统(ssm) 2025-04-01