06、面向对象

六、面向对象

设计对象并使用

类和对象

类(设计图):是对象共同的特征表述

对象:是真实存在的具体东西

在Java中必须先设计类,才能获得对象

类的定义:

public class 类名 {
   	成员变量;
   	成员方法;
    构造器;
    代码块;    
    内部类;   
}


public class Phone{
    //属性(成员变量)
    String color;
    double price;
    
    //行为(方法)
    public void call(){
        
    }
    public void play(){
        
    }
}

创建对象:

类名 对象名 = new 类名();
Phone phone = new Phone();

对象的操作:

对象.成员变量;
phone.color;
对象.成员方法(...);
phone.call();

补充:用来描述一类事物的类,专业叫做:Javabean 类;

​ 在Javabean类中,是不写main方法的。

注:类名首字母建议大写,需要见名知意,驼峰模式

​ 一个Java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。实际开发中建议还是一个文件定义一个class类

​ 成员变量的完整定义格式:修饰符 数据类型 变量名称 = 初始化值; 一般无需指定初始化值,存在默认值。

封装

封装

如何正确设计对象的属性和方法

对象代表什么,就得封装对应的数据,并提供数据对应的行为

理解封装思想的好处

让编程变得简单,有事么事,找什么对象,调方法就行。

降低我们的学习成本,可以少学,少记,不需要记对象有哪些方法,有需要时去找就行

private关键字

使一个修饰符,可修饰成员变量和成员方法,被private修饰的成员只能在本类中草能访问

set与get:

set:给成员变量进行赋值

get:对外提供属性

get:
public String get(){
    return ;
}

set:
public void set(String s){
    sex = s;
}

this关键字

成员变量与局部变量

成员变量:定义在方法体外部

局部变量:定义在方法体内部

就近原则:谁离我更近,就使用谁

为了避免就近原则带来的问题,引出this关键字 解决

this的内存原理

本质:所在方法调用者的地址值

在这里插入图片描述

构造方法

构造方法

​ 构造方法也叫构造器、构造函数

作用:在创建对象的时候给成员变量进行初始化的

格式:

public class Student{
    修饰符 类名(参数){
        方法体;
    }
}

空参构造:
	//如果我们没有写任何的构造方法,虚拟机会自动生成一个空参构造
	public Student(){}
带参构造:
	public StudentString name , int age){
		this.name=name;
		this.age=age;
	}

执行时机:创建对象的时候由虚拟机调用,不能手动调用构造方法

​ 没创建一次对象,就会调用一次构造方法

特点:方法名与类名相同,大小写也要一致

​ 没有返回值类型,连void都没有

​ 没有具体的返回值(不能return带回结果数据)

标准JavaBean

标准JavaBean

规范:

类名需要见名知意

成员变量使用private修饰

至少提供两个构造方法(无参构造,全参构造)

成员方法(get与set)

插件:ptg 一键生成标准Javabean

对象内存图

对象内存图

  1. 加载class文件
  2. 声明局部变量
  3. 在堆内存中开辟一个空间
  4. 默认初始化
  5. 显示初始化
  6. 构造方法初始化
  7. 将堆内存中的地址值赋值给左边的变量

在这里插入图片描述

study()方法执行完后出栈,随后main()方法执行完毕后出栈

两个引用指向同一个对象

指向的是该对象在堆内存中的地址

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

基本数据类型:数据值是存在自己的空间中

引用数据类型:数据值是存储在其他空间中,自己空间中存储的是地址值

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

[外链图片转存中…(img-k8kxrNHt-1711023732243)]

study()方法执行完后出栈,随后main()方法执行完毕后出栈

两个引用指向同一个对象

指向的是该对象在堆内存中的地址

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

基本数据类型:数据值是存在自己的空间中

引用数据类型:数据值是存储在其他空间中,自己空间中存储的是地址值

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

在这里插入图片描述

相关推荐

  1. 面向对象——类与对象

    2024-03-22 06:16:04       38 阅读
  2. 面向对象面向过程

    2024-03-22 06:16:04       52 阅读
  3. 面向过程和面向对象

    2024-03-22 06:16:04       29 阅读
  4. 【10】PyQt面向对象

    2024-03-22 06:16:04       65 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-22 06:16:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-22 06:16:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-22 06:16:04       82 阅读
  4. Python语言-面向对象

    2024-03-22 06:16:04       91 阅读

热门阅读

  1. Android jni开发崩溃分析定位源码行号

    2024-03-22 06:16:04       44 阅读
  2. Quartz

    Quartz

    2024-03-22 06:16:04      40 阅读
  3. 26. 删除有序数组中的重复项 (Swift版本)

    2024-03-22 06:16:04       35 阅读
  4. Python爬虫实战:爬取太平洋网络相机文章

    2024-03-22 06:16:04       38 阅读
  5. Vue 小知识点

    2024-03-22 06:16:04       45 阅读
  6. 【Unity】FacebookSDK接入

    2024-03-22 06:16:04       41 阅读
  7. BERT 论文阅读笔记

    2024-03-22 06:16:04       65 阅读
  8. 数据仓库数据质量监控

    2024-03-22 06:16:04       44 阅读
  9. 贪心算法问题

    2024-03-22 06:16:04       40 阅读
  10. 谷歌浏览器(Google Chrome) 常用快捷键和扩展程序

    2024-03-22 06:16:04       85 阅读
  11. 数据结构奇妙旅程之贪心算法

    2024-03-22 06:16:04       46 阅读
  12. SQL语句每日一练二

    2024-03-22 06:16:04       43 阅读