文章目录
前言
从本篇开始,我们就真正接触到Java的核心——面向对象,我们的java学习之路也算是正式踏上旅途,所以本章的所有概念和内容都十分重要,特别是其中的思想一定要好好领悟。
受篇幅限制,面向对象的笔记我分成了上下部分,本篇文章是韩顺平老师课程P192-P226(第7章:面向对象编程基础)上半部分重点内容的详细总结。
- 类与对象
- 成员方法
- 成员方法传参机制
- 克隆对象
- 方法递归调用
一、类与对象
1. 类与对象的概述
- 一个程序就是一个世界,这个世界里有很多事物(对象),每个对象都有自己的属性和行为。
- 例如:我们假设把小狗看作一个对象,那么它有:
- 属性:性别、品种、年龄、体重…
- 行为:进食、叫、跑…
- 类与对象关系示意图
2. 快速入门(用面向对象的方式解决问题)
public class Object {
public static void main(String[] args) {
//3.实例化一只猫 创建一只猫
//4.把创建的猫赋给 cat1(对象)
Cat cat1 = new Cat();
cat1.name = "小白";
cat1.age = 3;
cat1.color = "白色";
Cat cat2 = new Cat();
cat2.name = "小花";
cat2.age = 100;
cat2.color = "花色";
//使用
System.out.println("第一只猫的信息:" + cat1.name + " "
+ cat1.age + " " + cat1.color);
System.out.println("第二只猫的信息:" + cat2.name + " "
+ cat2.age + " " + cat2.color);
}
}
//1.定义一个猫类
class Cat {
//2.属性 名字,年龄,颜色
String name;
int age;
String color;
}
3. 对象在内存中的存在形式(重要)
- 对象和数组一样,都是引用类型,所以在jvm中都是一个地址
- 三个属性,所以在堆中cat类地址下有三个区域(分配空间)
- 字符串本质上是引用类型,以地址形式存放在堆中
- 存放“小白”和“白色”这两个数据的地方是方法区的常量池里面
- 年龄是基本数据类型,所以直接存放在堆中
- 同时会在方法区中加载cat类的信息,包括这个cat类中的各种属性信息和方法信息
4. 属性
- 概念
- 属性也叫做成员变量、filed(字段)
- 属性是类的一个组成部分,一般是基本数据类型,也可是引用类型(对象,数组)
- 细节
- 属性的定义语法与变量一样,只是在前面会多一个访问修饰符(后期讲到包的时候讲)
- 访问修饰符:控制属性的访问范围, 有四种访问修饰符 public, proctected, 默认, private
访问修饰符 属性类型 属性名;
- 访问修饰符:控制属性的访问范围, 有四种访问修饰符 public, proctected, 默认, private
- 属性的定义类型可以为任意类型,包含基本类型或引用类型
- 属性如果不赋值,有默认值,规则和数组一致。
int-0,short-0, byte-0, long-0, float-0.0, double-0.0
char-\u0000,boolean-false,String-null
- 属性的定义语法与变量一样,只是在前面会多一个访问修饰符(后期讲到包的时候讲)
- 理解:p1只是这个对象的名字(代词),真正的对象其实是new person()语句所创建的空间
- 创建对象访问属性
- 如何创建对象
- 如何创建对象