1 目录及资源索引
2 面向对象基础三
2.1 对象的使用方法
使用对象调用变量和函数:
- 对象.变量
- 对象.函数()
2.2 实际测试
我们用最熟悉的狗来举个例子,先写一个公共类,代码如下:
class Dog
{
String name; // 狗的名字
int age; // 年龄
String color; // 颜色
void jump() // 狗的行为 跳跃
{
System.out.println("jump");
}
}
写一个主函数,用来测试这个类,相关代码如下:
class Test
{
public static void main(String args[])
{
Dog d = new Dog(); // 生成对象
d.name = "旺财"; // 给这只狗取名叫 旺财
d.age = 2; // 年龄 2岁
d.color = "黑色"; // 狗的颜色为 黑色
d.jump(); // 旺财跳跃
System.out.println("名字是" + d.name);
}
}
实际测试结果如下:
2.3 生成多个对象
生成多个对象,具体代码如下:
Dog d1 = new Dog(); // 狗1
Dog d2 = new Dog(); // 狗2
内存图,参考老师课件如下:
个人总结来说,创建多个对象,基本就是调用多个生成对象,然后引用名字不同而已。就比如都是狗,一条狗生了一窝小狗狗,它们不一样,但它们又都是狗。哈哈哈哈
2.4 匿名对象
定义:可以不定义对象的引用名称,而直接调用这个对象的方法。这样的对象叫做匿名对象,比如:
new Dog().jump();
没有名字的对象,就是匿名对象,都是一次性的。
接着老师提了一个很有意思的思考,如下两行代码,是一样的吗?
new Dog().jump();
new Dog().jump();
虽然,看代码格式,内容全都一样,但这两个不是同一个。
3 面向对象基础四
3.1 函数的重载
什么是重载?先看代码,举例如下:
class A
{
void funA()
{
System.out.println("没有参数的funA函数");
}
void funA(int i)
{
System.out.println("有一个整形参数的funA函数");
}
void funA(int i, int j)
{
System.out.println("有两个整形参数的funA函数");
}
}
由上述代码就可以看到,这两个函数就构成了重载,特征如下:
- 处于同一个类;
- 函数名相同;
- 函数参数不同。
关于重载,老师举了一个很形象的例子,比如我们日常生活中的洗,洗这个行为很抽象,可以洗脸,洗手,洗澡,洗菜,洗衣服等等,这就类似函数名相同,但是传的参数不一样。
参考上述代码可知,重载可以有多个参数。
关于重载,具体的定义参考老师课件如下:
- 两个或者多个函数在同一个类当中;
- 函数名相同;
- 参数列表不同;
3.2 构造函数
构造函数具体样式:类名 + ():构造函数
构造函数相关特征如下:
- 没有返回值类型的定义;
- 构造函数的名字必须和类名相同;
- 如果构造函数没有写,编译器在编译时会自动创建。(参数,内容全为空)
构造函数作用:
- new + 构造函数:可以生成一个新的对象;
- 利用构造函数,为对象类赋初始值;
3.3 实际测试代码
使用构造函数,为对象类赋初值,可以很方便的简化代码,具体如下:
class Person
{
Person()
{
}
Person(String n, int a)
{
name = n;
age = a;
}
String name;
int age;
}
主函数代码如下:
class Test
{
public static void main(String args[])
{
Person person1 = new Person("zhangsan", 10);
Person person2 = new Person("lisi", 20);
System.out.println("person1的name是" + person1.name + ", age是" + person1.age);
System.out.println("person2的name是" + person2.name + ", age是" + person2.age);
}
}
由上述代码,可以看到,在定义对象的时候,直接赋初值,会简化很多重复代码。
4 总结
- 学会了对象的使用方法;
- 学会了创建单个,多个对象的方法;
- 了解了什么是匿名对象;
- 了解了什么是函数重载;
- 了解了什么是构造函数,及构造函数的部分作用;
- 简单的实际测试了一下,还需要进一步加强。