当前位置: 首页 > article >正文

java day04-面向对象基础(内存 封装 继承 修饰符 工具类 )

1.对象内存图

1.1 Java 内存分配

1.2 堆和栈

栈:所有局部变量都会在栈内存中创建

局部变量:定义在方法中的变量或者方法声明上的变量

方法执行都会加载到栈中进行

-----------------------------------------------------------------------------------------------------------------------

堆:所有对象及其对应的实例变量和数组都将存储在此处

简单理解为:new出来的东西,都存储在堆内存

每一个new出来的东西都有一个地址值,使用完毕, 会在垃圾回收器空闲时被回收

实例变量(成员变量)有初始化值:

                基本数据类型:整数:0,浮点数:0.0,布尔:false,字符:空字符

                引用数据类型:null==string 数组

 2.private权限修饰符

被private修饰的成员在**本类**中可以通过 实例对象.属性名进行访问。

针对 **private** 修饰的成员变量,如果需要被其他类使用,提供两个相应的操作:

get变量名(),用于获取成员变量的值,方法用 public修饰

set变量名(参数),用于设置成员变量的值,方法用 public修饰

3.this

局部变量和成员变量名字一致,局部变量赋值给成员变量。

this限定的变量用于指代成员变量

方法被哪个对象调用,this就代表哪个对象

4.封装:隐藏事物具体的实现细节

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

通过方法来控制成员变量的操作,提高了代码的安全性

把代码用方法进行封装,提高了代码的复用性

快捷方式:alt+insert 选择getterAndSetter

5.构造方法

作用:创建对象时默认调用的方法 常用于对象数据的初始化

javaBean步骤

1将属性进行私有化
2提供一个公共的get和set方法
3提供一个无参构造函数
4提供一个全参的构造函数(可选 javase阶段先写上)
 5重写toString  hashCode和equals方法

6.继承:子类继承父类的属性和方法

6.1格式:

public class 子类名 extends 父类名 { }

子类的构造方法执行时会先走父类的构造方法 第一句默认加一个super()

6.2继承的访问特性

成员变量的访问特 性 -- 就近原则

继承的子类访问父类属性和方法 super

继承中成员方法的访问特点 -- 就近原则

方法重写 - 子类对父类方法重写

子类可以有自己的特有的成员变量和方法

好处:增强代码复用性

坏处:增强类的耦合性

6.3继承的访问特性-super关键字

super:代表父类存储空间的标识(可以理解为父类对象引用)

关键字访问成员变量访问构造方法访问成员方法
thisthis.成员变量访问本类成员变量this(…)访问本类构造方法this.成员方法(…)访问本类成员方法
supersuper.成员变量访问父类成员变量super(…)访问父类构造方法super.成员方法(…)访问父类成员方法

7.方法重写

子类出现和父类相同方法声明

@Override

当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容

方法名参数返回值类型
重写不同类中(有继承关系或实现关系)相同相同相同子类声明的异常范围不小于父类代码内容不同
重载同一类中相同类型/顺序/个数不同无关

8.修饰符

8.1权限修饰符

修饰符同一个类中同一个包中不同包,但父子关系不同包的无关类
private
default默认
protected
public

default:可在不同包下使用

protexted:同包和有继承关系的文件

8.2状态修饰符

8.2.1static(静态)    共享

static  静态修饰为所有对象使用 关键字是静态的意思,可以修饰成员方法,成员变量

静态成员方法只能访问静态成员,创建对象除外

被类的所有对象共享,这也是我们判断是否使用静态关键字的条件

② 可以通过类名调用,也可以通过对象名调用,推荐使用类名调用 

8.2.2final(最终态)

修饰方法:表明该方法是最终方法,不能被重写

修饰变量:表明该变量是常量,不能再次被赋值

修饰类:表明该类是最终类,不能被继承

使用场景 常量、π、重力加速度g等不变的成员变量 工具类 最终方法

9创建工具类

①构造方法私有化
②方法设成静态

public class ArrayUtils {
    //1构造方法私有化 代表不能创建对象
    private ArrayUtils() {}
    //2将所有方法设置成静态方法
    //冒泡排序
    public static int[] maopao(int[]arr){
        int temp;
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = 0; j < arr.length-1; j++) {
               if (arr[j]>arr[j+1]){
                   temp=arr[j];
                   arr[j]=arr[j+1];
                   arr[j+1]=temp;
               }
            }
        }
      
        return arr;
    }
}
//测试类
import java.util.Arrays;
public class Text {
    public static void main(String[] args) {
        int []arr={4,3,2,1};
        ArrayUtils.maopao(arr);
        System.out.println(Arrays.toString(arr));
    }
}


http://www.kler.cn/a/507179.html

相关文章:

  • Spring Boot Actuator 详细介绍
  • Jupyter notebook中运行dos指令运行方法
  • 从 SQL 语句到数据库操作
  • Spring Boot 下的Swagger 3.0 与 Swagger 2.0 的详细对比
  • 工作中redis常用的5种场景
  • PT8M2302 触控 A/D 型 8-Bit MCU
  • 【Excel笔记_3】execl的单元格是#DIV/0!,判断如果是这个,则该单元格等于空
  • SAP -最简单smartforms打印保存到本地pdf方法
  • PostCSS安装与基本使用?
  • Java冒泡排序算法之:变种版
  • Require:利用MySQL binlog实现闪回操作
  • 国产化板卡设计原理图:2295-基于 JFM7K325T的半高PCIe x4双路万兆光纤收发卡
  • Django框架:python web开发
  • 深度学习超参数调优秘籍:解锁模型的最佳性能
  • Vue2中使用正则表达式限制输入框输入
  • G1原理—6.G1垃圾回收过程之Full GC
  • 面试反馈流程及模版
  • 【算法】枚举
  • Hive SQL必刷练习题:留存率问题
  • ffmpeg硬件编码
  • HTTP:Nagle算法与TCP_NODELAY
  • 蛋糕商城 SpringBoot3.4.0,JPA
  • OpenCV机器视觉:主色提取的奇妙之旅
  • Pytorch|YOLO
  • python中元类相关的问答题
  • UML系列之Rational Rose笔记六:部署图