栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

[Java笔记5] 面向对象

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[Java笔记5] 面向对象

目录

类和对象

如何定义类

如何得到类的对象

如何使用对象

成员变量和局部变量的区别

Java对象内存图

两个对象内存图

垃圾回收

构造器

构造器的作用

构造器的分类

this关键字

封装

封装的实现步骤

封装的作用

JavaBean


视频教程传送门 -> https://www.bilibili.com/video/BV1Cv411372m?p=73

类和对象

如何定义类

public class 类名 {
1、成员变量(代表属性)
2、成员方法(代表行为)
}
eg:

public class Car {
  // 属性 (成员变量)
  String name;
  double price;

  // 行为(方法)
  public void start(){
  }
  public void run(){
  }
}

如何得到类的对象

类名 对象名 = new 类名();
eg: Car c = new Car();


如何使用对象

访问属性: 对象名.成员变量
访问行为: 对象名.方法名(…)

- 成员变量的完整定义格式是:
  修饰符 数据类型 变量名称 = 初始化值; 一般无需指定初始化值,存在默认值。
- 类名首字母建议大写,满足“驼峰模式”。
- 一个Java文件中可以定义多个class类,但只能一个类是public修饰,且public修饰的类名必须成为代码文件名;实际开发中建议一个文件定义一个class类。

成员变量和局部变量的区别
区别成员变量局部变量
类中位值类中、方法外常见于方法内
初始化值有默认初始化值没有初始值,使用之前需要完成赋值
内存位置堆内存栈内存
生命周期随着对象的创建而存在,随着对象的消 失而消失随着方法的调用而存在,随着方法的运行结束 而消失
作用域在所归属的大括号中

Java对象内存图

两个对象内存图

垃圾回收

当堆内存中的类对象或数组对象,没有被任何变量引用(指向)时,就会被判定为内存中的“垃圾”。Java存在自动垃圾回收器,会定期进行清理。

构造器

构造器的作用

用于初始化一个类的对象,并返回对象的地址。
构造器的定义格式

修饰符 类名(形参列表){
...
}

public class Car {
...
  // 无参数构造器(这里需要写出来)
  public Car(){
  ...
  }
  // 有参数构造器
  public Car(String n, String b){
  ...
  }
}

初始化对象的格式
类名 对象名称 = new 构造器;
Car c = new Car();   //等号右侧的Car()就是构造器


构造器的分类

无参数构造器:初始化对象时,成员变量的数据均采用默认值。
有参数构造器:初始化对象时,可以为对象进行赋值

注意事项:
任何类定义出来,无参数构造器默认存在,可以不写。
定义了有参数构造器,无参数构造器就没有了,此时需要另外写无参数构造器。

this关键字

可以出现在成员方法、构造器中,代表当前对象的地址。
通过this关键字可以访问当前对象的成员变量、成员方法。

eg: Car.java中的this.name是Car这个类创建的该对象的属性name;name是goWith(String name)或Car(String name, double price)传入的值

package com.test.thisdemo;

public class Car {
    String name;
    double price;

    public void goWith(String name){
        System.out.println(this.name +"正在和:" + name +"比赛!");
    }

    
    public Car(){
        System.out.println("无参数构造器被触发执行~~~");
    }

    
    public Car(String name, double price){
        System.out.println("有参数构造器被触发执行~~~");
        System.out.println(this);
        this.name = name;
        this.price = price;
    }
}


package com.test.thisdemo;


public class ThisDemo {
    public static void main(String[] args) {
        Car c = new Car("宝马X3", 37.89);
        System.out.println(c);
        System.out.println(c.name);
        System.out.println(c.price);

        c.goWith("奔驰GLC");
    }
}

运行ThisDemo.java 输出如下:

封装

封装的实现步骤

一般对成员变量使用private关键字修饰,该成员变量只能在当前类中访问。
提供public修饰的公开的getter、setter方法暴露其取值和赋值。

封装的作用

- 加强了程序代码的安全性
- 适当的封装可以提升开发效率、让程序更容易理解与维护

public class Student {
    private int age;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

JavaBean

可以理解成实体类,其对象可以用于在程序中封装数据。

标准JavaBean须满足如下要求:
- 成员变量使用 private 修饰
- 提供每一个成员变量对应的 setXxx() / getXxx()
- 必须提供一个无参构造器

右键 Generate -> Getter and Setter

选中成员变量,

可以自动补充如下,

public class User {
    private double height;
    private String name;
    private double salary;
    
    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public String getName() {
        return name;
    }

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

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

 
}

 也可以写构造方法,右键 Generate -> Constructor

选择成员变量 => 有参构造方法,Select None => 无参构造方法

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/531386.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号