java学习之面向对象和封装

简介: java学习之面向对象和封装


面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节。

面向对象:当需要实现一个功能的时候,不关系具体的步骤,而是找一个已经具有该功能的人帮忙做事情。

面向过程强调步骤,面向对象强调对象(结果)。

面向对象的思想更加符合我们思考的习惯,它可以将复杂的事情简单化,并且将我们从执行者变成了指挥者。

面向对象的语言中包含了三大基本特征:封装、继承和多态。

类和对象

     类是一组相关属性和行为的集合。可以把类看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。

     现实中描述一类事物主要从两个方面:

            1. 属性:该事物的状态信息

            2. 行为:该事物能够做什么

对象
     对象是一类事物的具体体现,对象是类的一个实例,必然具备该类事物的属性和行为。

类和对象的关系
      类是对一类事物的描述,是抽象的

      对象是一类事物的实例,是具体的

      类是对象的模板,对象是类的实例

例如:现在定义一个类来模拟“学生”事物,那么其中就有两个组成部分:

           ★ 属性(是什么)

               姓名 、年龄

           ★ 行为(能做什么)

               吃饭 、睡觉 、学习

          对应到java的类当中:

            ★ 成员变量(属性)

                String name ; 

                int age ; 

            ★ 成员方法(行为)

                public void eat(){ }

                public void sleep(){ }

                public void study(){ }

注意:1. 成员变量是直接定义在类当中的,在方法外边

           2. 成员方法不要写static关键字

通常情况下一个类并不能直接使用,需要根据类创建一个对象才能使用:
           1. 导包:即指出需要使用的类在什么位置

                          import 包名称.类名称

                          对于和当前类属于同一个包的情况,可以省略导包语句不写

           2. 创建

                          格式:   类名称 对象名 = new 类名称() ;

                         Student stu = new Student() ;

           3. 使用:分为两种情况

                        ★ 使用成员变量 :对象名.成员变量名

                        ★ 使用成员方法:对象名.成员方法名(参数)

注意:如果成员变量没有进行赋值,则会有一个默认值,规则和数组一样

           当一个对象作为参数传递到方法当中去时,实际上传递进去的是对象的地址。

           当使用对象作为方法的返回值时,实际上返回的是对象的地址。

局部变量和成员变量
      1. 定义的位置不一样(重要)

          局部变量:在方法的内部

          成员变量:在方法的外部,直接写在类当中

      2. 作用的范围不一样(重要)

          局部变量:只有在方法中才可以使用,出了方法就不可以再使用

          成员变量:整个类都可以通用

      3. 默认值不一样(重要)

          局部变量:没有默认值,如果想要使用,必须手动进行赋值

          成员变量:如果没有赋值,会有默认值,默认值的规则和数组一样

      4. 内存的位置不一样(了解)

          局部变量:位于栈内存

          成员变量:位于堆内存

      5. 生命周期不一样

          局部变量:随着方法进栈而诞生,随着方法出栈而消失

          成员变量:随着对象的创建而诞生,随着对象被垃圾回收而消失

【有static的是普通方法,普通方法直接调用;没有static是成员方法,成员方法要通过对象来调用】

面向对象三大特征:封装 、继承 、多态
      ---  封装性在Java中的体现:

              1.  方法就是一种封装

              2. 关键字private也是一种封装

       【 封装就是将一些细节信息隐藏起来,对于外界不可见 】

      --- 封装的好处在于可以取到保护代码和数据的作用,增强了代码的安全性,同时也让代码更容易理解与维护。

封装的操作 -- private关键字
       private使用格式:   private  数据类型   变量名 ; 

        一旦使用了private进行修饰,则本类当中仍然可以随意访问,但是超出了本类范围之外就不可以直接访问成员变量了,但是可以间接访问,间接访问private成员变量是通过定义一对Getter / Setter 方法

其中命名规则必须是:setXX 或 getXX

        对于Getter来说 ,不能有参数 ,返回值类型和成员变量对应

        对于Setter来说 , 不能有返回值,参数类型和成员变量对应

public class Student {

private String name ;

private int age ;

public void setName(String n){

     name = n ;

}

public String getName(){

    return name ;

}

}
this 关键字
       this的含义:this代表所在类的当前对象的引用(地址值)

       当方法的局部变量和类的成员变量重名的时候,根据“就近原则”,优先使用局部变量,如果此时需要访问本类当中的成员变量,需要使用格式: this.成员变量名   【this帮助在重名的情况下起到区分的作用】

 【记住:方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。】

构造方法
    --- 当一个对象被创建的时候,构造方法用来初始化该对象,给对象的成员变量赋初始值。

  (  即专门用来创建对象的方法,当通过关键字new来创建对象时,其实就是在调用构造方法  )

   【无论是否定义构造方法,所有的类都有构造方法,因为java自动提供一个无参数构造方法,一旦自己定义了构造方法,java自动提供的默认无参数构造方法就会失效 】

    ---  格式:   public  类名称(参数类型   参数名称){

                              方法体;

                        }

public class Student {

private String name ;

private int age ;

// 无参数的构造方法
public Student(){
}

// 有参数的构造方法
public Student(String name , int age){

    this.name = name ;
    this.age = age ;

}

}
     ---  注意:

         1. 构造方法的名称必须和所在类的名称完全一样,连大小写也要一样

         2. 构造方法不用写返回值类型,连void都不用写

         3. 构造方法不能return一个具体的返回值

         4. 如果没有编写任何的构造方法则编译器会赠送一个构造方法,赠送的构造方法没有参数,

             方法体什么都不做

             public Student(){ }

         5. 一旦编写了至少一个构造方法则编译器将不会再赠送构造方法

         6. 构造方法也是可以进行重载的

             重载:方法名称相同,参数列表不同

             全参数构造方法的好处在于可以直接将现存的数据传入而不使用Setter方法,但如果要修

             改数据还是要Setter方法(获取还是要用Getter方法)

标准代码 -- JavaBean
JavaBean 是 java 语言编写类的一种标准规范 

一个标准的类通常要拥有下面四个组成部分:

     1. 所有的成员变量都要使用private关键字修饰

     2. 为每一个成员变量编写一对Getter/Setter方法

     3. 编写一个无参数的构造方法

     4. 编写一个全参数的构造方法

以学生类为例编写符合 JavaBean 规范的类 ,标准代码如下:

public class Student{

  // 成员变量
  private String name ;
 
  private int age ;
 
  // 构造方法
  public Student(){}
  
  public Student(String name , int age ){

       this.name = name ;
       this.age = age ;

  }


  // 成员方法
  public void setName(String name){

      this.name = name ;
 
  }

  public String getName(){

      return name ; 
  }

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

  public int getAge(){

      return age ;

  }

}
测试类代码如下:

public class TestStudent{

 public static void main(String[] args){

      // 无参数构造使用
      Student s = new Student() ;
      s.setName("小池") ; 
      s.setAge(22) ; 
      System.out/println(s.getName() + "-----" + s.getAge()) ;



      // 带参数构造使用
      Student st = new Student("小君",22);
      System.out.println(st.getName() + "-----" + st.getAge()) ;

 }

}

相关文章
|
27天前
|
Java API Maven
2025 Java 零基础到实战最新技术实操全攻略与学习指南
本教程涵盖Java从零基础到实战的全流程,基于2025年最新技术栈,包括JDK 21、IntelliJ IDEA 2025.1、Spring Boot 3.x、Maven 4及Docker容器化部署,帮助开发者快速掌握现代Java开发技能。
271 1
|
1月前
|
数据采集 搜索推荐 Java
Java 大视界 -- Java 大数据在智能教育虚拟学习环境构建与用户体验优化中的应用(221)
本文探讨 Java 大数据在智能教育虚拟学习环境中的应用,涵盖多源数据采集、个性化推荐、实时互动优化等核心技术,结合实际案例分析其在提升学习体验与教学质量中的成效,并展望未来发展方向与技术挑战。
|
2月前
|
并行计算 Java API
Java 基础篇完整学习攻略
本教程涵盖Java基础到高级内容,包括模块化系统、Stream API、多线程编程、JVM机制、集合框架及新特性如Records和模式匹配等,适合零基础学员系统学习Java编程。
73 0
|
2月前
|
前端开发 Java API
新手 Java 学习资料结合最新技术的精选推荐及高效学习资源参考
本文为新手推荐了涵盖Java基础到最新技术的学习资料,包括官方文档、在线课程、书籍、学习网站及实践平台,帮助系统掌握Java编程,并通过Spring Boot实战提升开发能力。
115 1
|
2月前
|
NoSQL Java 数据库
Java 全栈学习超全面知识图谱构建完整 Java 知识体系
本文全面讲解Java核心技术体系,涵盖基础语法、面向对象、集合框架、主流框架(Spring、Spring Boot、MyBatis)及三大实战项目(微服务电商、响应式博客、企业后台系统),助你系统掌握Java全栈开发技能。
179 1
|
2月前
|
存储 算法 安全
JAVA 八股文全网最详尽整理包含各类核心考点助你高效学习 jAVA 八股文赶紧收藏
本文整理了Java核心技术内容,涵盖Java基础、多线程、JVM、集合框架等八股文知识点,包含面向对象特性、线程创建与通信、运行时数据区、垃圾回收算法及常用集合类对比,附有代码示例与学习资料下载链接,适合Java开发者系统学习与面试准备。
683 0
|
1月前
|
存储 搜索推荐 安全
Java 大视界 --Java 大数据在智能教育学习效果评估与教学质量改进中的应用(209)
本文探讨了 Java 大数据在智能教育中的创新应用,涵盖学习效果评估、教学质量改进及个性化教学方案定制等内容,结合实战案例与代码解析,展现技术如何赋能教育智能化转型。
|
2月前
|
存储 Java 测试技术
Java基础 - 面向对象
面向对象编程是Java的核心,包含封装、继承、多态三大特性。封装隐藏实现细节,提升代码可维护性与安全性;继承实现类间IS-A关系,支持代码复用;多态通过继承、重写与向上转型,实现运行时方法动态绑定,提升系统扩展性与灵活性。
|
3月前
|
前端开发 Java 数据库
2025 年 Java 学习完整步骤及详细路线指南
本教程涵盖Java从基础到高级的完整学习路径,包括环境配置、语法基础、面向对象编程、集合框架、多线程、网络编程、数据库操作、Spring Boot、微服务架构及项目实战。通过系统学习与实操,助你全面掌握Java核心技术与企业级应用开发。
510 1
|
3月前
|
Oracle Java 关系型数据库
java 入门学习视频_2025 最新 java 入门零基础学习视频教程
《Java 21 入门实操指南(2025年版)》提供了Java最新特性的开发指导。首先介绍了JDK 21和IntelliJ IDEA 2025.1的环境配置,包括环境变量设置和预览功能启用。重点讲解了Java 21三大核心特性:虚拟线程简化高并发编程,Record模式优化数据解构,字符串模板提升字符串拼接可读性。最后通过图书管理系统案例,展示如何运用Record定义实体类、使用Stream API进行数据操作,以及结合字符串模板实现控制台交互。该指南完整呈现了从环境搭建到实际项目开发的Java 21全流程实
111 1

热门文章

最新文章