Java学习笔记之面向对象编程(基础)

1 类与对象

1.1 类与对象关系示意图

image-20220318084901649

image-20220318084939789

1.2 类与对象的区别和联系

1)类是抽象的,概念的,代表一类事物,比如人类、猫类,是数据类型。

2)对象是具体的,实际的,代表一个具体事物,即实例。

3)类是对象的模板,对象是类的一个个实体,对应一个实例,

1.3 对象在内存中存在的形式

image-20220318085257270

1.4 属性/成员变量/字段

1.4.1 基本介绍

1)从概念或叫法上看:成员变量 = 属性 = field(字段)

2)属性是类的一个组成部分,一般是基本数据类型,也可以是引用数据类型(对象、数组)。

1.4.2 注意事项和细节说明

1)属性的定义语法同变量,示例:访问修饰符 属性类型 属性名;

四种访问修饰符:public、 protected、 默认 、private

2)属性的定义类型可以是任意类型,包括基本类型或引用类型。

3)属性如果不赋值,有默认值,规则和数组一致。

int 0、short 0、byte 0、long 0、float 0、double 0、char \u0000、boolean false、String null

1.5 如何创建对象

1)先声明后创建

Cat cat;

cat = new Cat();

2)直接创建

Cat cat = new Cat();

1.6 如何访问属性

1.6.1 基本语法

对象名.属性名

cat.name;
cat.age;
cat.color;
1.6.2 类与对象的内存分配机制

看下面一段代码,分析p2.age是多少?并画出内存图

Person p1 = new Person(); //第1步 
p1.age = 10; //第2步
p1.name = "小明"; //第3步
Person p2 = p1; //第4步
System.out.println(p2.age); //p2.age = 10;

image-20220318091420091

1.7 类与对象的内存分配机制

1.7.1 java内存结构分析

1)栈:一般存放基本数据类型(局部变量)

2)堆:存放对象(Cat cat、数组等)

3)方法区:常量池(常量、比如字符串),类加载信息

1.7.2 java创建对象的简单流程分析
Person p = new Person();
p.name = "jack";
p.age = 10;

1)先加载Person类信息(属性信息和方法信息,只会加载一次);

2)在堆中分配空间,进行默认初始化

3)比地址赋给p,p就指向对象

4)进行指定初始化,比如:

p.name = "jack";
p.age = 10;

看题分析内存布局图

Person a = new Person();
a.age = 10;
a.name = "小明";
Person b;
b = a;
System.out.println(b.name); //小明
b.age = 200;
b = null;
Syetem.out.println(a.age); //200
System.out.println(b.age); //异常

image-20220318092915199

2 成员方法

2.1 基本介绍

在某些情况下,我们要需要定义成员方法(简称方法)。比如人类:除一些属性外(年龄,姓名),还有一些行为(说话、跑步、学习等)。这时就要用成员方法才能完成。

2.2 成员方法快速入门

1)添加speak成员方法,输入"你是一个好人"

class Person{
   
	public void speak(){
   
		System.out.println("你是一个好人");
	}
}

2)添加cal01成员方法,可以计算从1+…+1000的结果

class Person{
   
	public void cal01(){
   
		int sum = 0;
		for(int i = 1; i <= 1000; i++){
   
			sum += i;
		}
		System.out.println("sum = " + sum);
	}
}

3)添加cal02成员方法,该方法可以接收一个数n,计算从1+…+n的结果

public void cal01(int n){
   
	int sum = 0; 
	for(int i = 1; i <= n; i++){
   
		sum += i;
	}
	System.out.pritnln("sum = " + sum);
}

4)添加getSum成员方法,可以计算两个数的和

public int getSum(int n, int m){
   
	int sum = n + m;
	return sum;
}

2.3 方法调用机制原理

画出下面代码的内存执行图

public class Object01{
   
	public static void main(String[] args){
   
		Person p = new Person();
		int res = p.getSum(10, 20);
		System.out.println("res = " + res);
	}
}
class Person{
   
	public int getSum(int n, int m){
   
		int res = n + m;
		return res;	}
}

image-20220318143435721

2.4 成员方法的好处

1)提高代码的复用性

2)可以将实现的细节封装起来,然后供其他用户调用即可

2.5 成员方法的定义

访问控制修饰符 返回数据类型 方法名 (形参列表){
   

	//方法体

	语句;

	return 返回值;

}

1)形参列表:表示成员方法输入的数据,如:cal(int n),getSum(int n, int m)

2)返回数据类型:表示成员方法输出,void表示没有返回值。

3)方法主体:表示为了实现某一功能的代码块。

4)return语句不是必须的。

2.6 注意事项和使用细节

2.6.1 访问修饰符

访问修饰符的作用是控制方法使用的范围,如果不写则为默认。

2.6.2 返回数据类型

1)一个方法最多有一个返回值,如果要多个返回结果,可以使用数组

2)返回类型可以为任意类型,包含基本类型和引用类型

3)如果方法要求有返回数据类型,则方法体最后的执行语句必须是 return 值;而且要求返回值类型必须和return值类型一致或兼容。

4)如果返回数据类型为void,则方法体中可以不写 return 语句或只写 return;。

2.6.3 方法名

遵循驼峰命名法,最好是见名知意,表达出该功能的意思即可。

2.6.4 形参列表

1)一个方法可以有0个参数,也可以有多个参数,中间用逗号隔开。

2)参数类型可以为任意类型,包含基本类型和引用类型。

3)调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数。

4)方法定义时的参数称为形式参数,简称形参;方法调用时传入的参数称为实际参数,简称实参,实参和形参的类型必须要一致或兼容、个数、顺序必须一致。<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值