Java基础——面向对象编程基础

自己需要复习的:
三、多个对象
六、对象数组
七、方法的重载

一、面向对象两个要素:
类:对一类事物的描述,是抽象的概念上的。如:人
对象:实际存在的事物的个体,也称为实例。如:小红,小明
二、类中包含:
属性:类中的成员变量(属性包含默认初始化值
方法:类中的成员方法
三、多个类对象
如果创建了一个类的多个对象,则每个对象都独立拥有一套类的属性(非static)。我们对其中一个对象的属性赋值,不影响另外一个对象的相同属性值。

Person p1 = new Person();
Person p2 = new Person();
Person p3 = p1;
p1.name = "小红”;
System.out.println(p1.name);//小红
System.out.println(p2.name);//null
System.out.println(p1.name);//小红
p3.name = "李四”;
System.out.println(p1.name);//李四

p1,p2,p3在栈内存中,p1(new) p3(与p1共用)指向堆中同一个内存,p2(new)执行堆内存中另一个位置,但是未赋值所以默认为初始化值null。
四、内存解析
在这里插入图片描述
五.成员变量与局部变量的区别
①声明位置不同
②成员变量可以添加权限设置:private,default,protected,public。局部变量不可以使用权限修饰符。
③成员变量有默认初始化值;局部变量没有局部初始化值,意味着调用局部变量之前一定要赋初值。
④在内存中加载的位置。成员变量加载在heap中,局部变量加载在栈中。
六.对象数组

Student [] stus = new Student[20];
for(int i=0;i<stus.length;i++){
	//给数组元素赋值
	stus[i] = new Student();
	//给student对象的属性赋值
	stus[i].number = (i+1);
	//年纪:[1-6]
	stus[i].state=(int)(Math.random*(6-1+1)+6);
	//成绩[0-100]
	stus[i].score = (int)(Math.random*(100-0+1)+100);
}
//stus[i]:是实例化的对象的地址,输出的是地址
//stus[i].number:实例化对象的地址对应的属性值

六、匿名对象
new Student.number;
new Studeng.score;
这两个的调用不是同一个对象。
1.我们创建的对象,没有显式的赋给一个变量名。即为匿名对象
2.特征:匿名对象只能调用一次
3.使用:如下
传递参数new Phone是一个匿名对象,在堆中开辟空间了,但是没有栈中的变量指向。传递给show之后,赋值给栈中的phone就有了指向。
在这里插入图片描述
七、方法的重载
1.重载:方法名相同,参数个数或者参数类型不同
2.判断是否是重载:跟方法的权限修饰符、返回值、形参变量名、方法体都没有关系。
3.通过对象调用方法时,如何确定某一个指定的方法:
看方法名---->再看参数列表要注意参数列表的兼容性,如
在这里插入图片描述
如果有第一个函数,调用getSum(3,4),输出1
如果没有第一个函数,调用getSum(3,4),输出2,完成了转型。
4.重载的细节:
①.参数列表不同:参数类型、参数个数、参数顺序不同都算
②.参数名,参数列表相同,函数类型不同,不行
③.参数(int i,int j)(int m,int n)不算参数列表不同
在这里插入图片描述
八、可变个数形参的方法
jdk 5.0新增的内容
1.可变个数形参的格式:数据类型…变量名
2.当调用可变个数形参的方法时,传入的参数个数可以是0个,1个,2个…都匹配到可变参数个数的show方法中。
在这里插入图片描述
在这里插入图片描述
3.如果参数个数有刚好匹配的方法,就调用匹配的方法,不需要调用可变参数的方法。如下图,show(“hello”)就调用对应的show(String s)方法,而不调用show(String…strs)。
在这里插入图片描述
4.可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载。即:对于下面两个方法不能同时存在:会报错,重复。
在这里插入图片描述
show(“AA”,"“BB”,“CC”);//当做数组去用就可以
show(new String);
都通过数组遍历就可以。
5.可变个数行参只能放到形参列表的末尾。且最多只能声明一个可变形参。
九、值传递引用传递
区分传递的是普通变量,还是引用变量。
在这里插入图片描述
输出 15 0 20
在这里插入图片描述
在这里插入图片描述
可以在method中
a=a10
b=b
20
System.exit(0);//直接停止程序,不允许执行原来main中的sou
在这里插入图片描述
十、递归方法

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值