0基础java入门:第二十六节.面向对象代码演示。
本节课程只是用来理解,对象与类在代码中的体现和关系。
尽量新建一个项目如下图结构
完整代码演示
1.创建一个类 : Teacher
package com.test.demo1;
// 本类 描述 教师的特性 没有书写主函数所以这个类不能执行
public class Teacher {
// 成员变量
String name;// 教师姓名
int teacherAge;// 教龄
boolean sex;// 教师性别 布尔类型 true表示女 false 表示男
double salary;// 教师薪资
String subject;// 教师科目
// 成员方法
// 讲课方法 h参数表示每天授课时间
public void toTeach(int h){
System.out.println(name+"老师每天讲课"+h+"小时");
}
// 检查作业
public void checkTheHomework(int c){
System.out.println(name+"老师每天检查"+c+"份作业");
}
}
2.通过类生成对象: 创建Test1类 在类中添加主函数 演示对象的使用。
package com.test.demo1;
// Test类中添加主函数 用来 通过 Teacher类 实例化对象 演示对象和类的使用
public class Test1 {
// 添加了主函数 这个类是可以执行的类
public static void main(String[] args) {
// 通过Teacher类实例化对象 tea1
Teacher tea1 = new Teacher(); // 这行代码叫做实例化对象 语法: 类名 对象名 = new 类名();
// 直接输出 对象 tea1
System.out.println(tea1); // 这里直接输出对象 会显示 目前对象的地址
// 输出tea1对象中的属性
System.out.println(tea1.name); //String 类型默认值 null
System.out.println(tea1.teacherAge);// int类型 默认值 0
System.out.println(tea1.sex);// boolean类型默认值 fasle
System.out.println(tea1.salary); // double 类型默认值 0.0
System.out.println(tea1.subject); // String类型 默认值 null
//===============================================
// 给 tea1 对象的属性赋值
tea1.name = "张三";
tea1.teacherAge = 10;
tea1.sex = true;
tea1.salary = 100000;
tea1.subject = "语文";
// 赋值后再次输出 tea1 对象的属性
System.out.println(tea1.name);
System.out.println(tea1.teacherAge);
System.out.println(tea1.sex);
System.out.println(tea1.salary);
System.out.println(tea1.subject);
//===============================================
// 调用 tea1 对象中的方法
tea1.toTeach(4); // 讲课方法
tea1.checkTheHomework(100); // 检查作业方法
}
}
3.运行结果
类与对象调用关系图解
实例化对象详解
对象的实例化可以理解为是通过一个图纸制作出一个产品。类就是我们的图纸,图纸中规定对象可以使用的属性和方法。对象就是通过类图纸生产的产品。每一个产品都符合类提供的标准。一个类可以实力多个对象。就像通过一个图纸可以可以做出多个产品。
实例化对象的基础语法: 类名 对象名 = new 类名();
代码演示:在包下新建类 Test2 添加主函数完成以下操作
// 这里我们就说 通过Teacher类 实例化了对象 tea1 ,tea1是Teacher类的一个对象。
Teacher tea1 = new Teacher();
// 实例化对象 tea2
Teacher tea2 = new Teacher();
// 实例化对象 tea3
Teacher tea3 = new Teacher();
对象属性使用详解
实例化对象之后, 就可以通过对象调用 类中规定的 属性和方法。只能调用类中已经书写规定好的,没有的属性和方法时不能调用的。
对象实例化之后是所有规定的属性都是使用默认值的。下边我们直接输出一个实例化对象后的属性查看结果。
使用对象中属性的语法: 对象名.属性名
代码演示:
package com.test.demo1;
// Test类中添加主函数 用来 通过 Teacher类 实例化对象 演示对象和类的使用
public class Test2 {
public static void main(String[] args) {
// 通过Teacher类实例化对象 tea1
Teacher tea1 = new Teacher(); // 这行代码叫做实例化对象 语法: 类名 对象名 = new 类名();
// 实例化后输出 tea1 对象的属性
System.out.println(tea1.name);
System.out.println(tea1.teacherAge);
System.out.println(tea1.sex);
System.out.println(tea1.salary);
System.out.println(tea1.subject);
}
}
运行结果:
分析一波: 代码中tea1对象实例化之后。我们直接输出了这个对象的所有属性。这时对象中的所有属性都是默认值状态,因为我们在类中定义变量时并没有赋值。所以这里使用默认值。
给对象属性赋值的语法 : 对象名.属性名 = 值;
之后我们修改代码 在输出 属性之前,给每一属性赋值。
代码演示:
package com.test.demo1;
// Test类中添加主函数 用来 通过 Teacher类 实例化对象 演示对象和类的使用
public class Test2 {
public static void main(String[] args) {
// 通过Teacher类实例化对象 tea1
Teacher tea1 = new Teacher(); // 这行代码叫做实例化对象 语法: 类名 对象名 = new 类名();
// 给 tea1 对象的属性赋值
tea1.name = "张三";
tea1.teacherAge = 10;
tea1.sex = true;
tea1.salary = 100000;
tea1.subject = "语文";
// 赋值后再次输出 tea1 对象的属性
System.out.println(tea1.name);
System.out.println(tea1.teacherAge);
System.out.println(tea1.sex);
System.out.println(tea1.salary);
System.out.println(tea1.subject);
}
}
运行结果:
分析一波:代码中对象实例化之后,通过赋值 之后在输出的就不是默认值,而是我们代码中给定的值了。
对象方法调用详解
通过对象调用方法的语法: 对象名.方法名(参数); 这里的参数是根据规定填写的可能没有也可能时是多个。如果方法有返回值可以定义变量接收返回值。
代码演示:在包下新建类 Test3 添加主函数完成以下操作
package com.test.demo1;
// Test类中添加主函数 用来 通过 Teacher类 实例化对象 演示对象和类的使用
public class Test3 {
public static void main(String[] args) {
// 通过Teacher类实例化对象 tea1
Teacher tea1 = new Teacher(); // 这行代码叫做实例化对象 语法: 类名 对象名 = new 类名();
// 给 tea1对象的 name属性赋值
tea1.name = "张三";
// 调用方法 讲课
tea1.toTeach(4); // 讲课方法
// 调用方法 检查作业
tea1.checkTheHomework(100); // 检查作业方法
}
}
运行结果:
分析一波:代码中通过tea1对象分别调用了toTeach方法和 checkTheHomework 方法。这里注意方法还是Teacher类型中书写的方法。方法的参数和返回值都是类中规定好的。参数和返回值的使用,和之前我们学习的方法是一样的。
类与对象关系代码演示
我们在上一节课中说过 :一个类是可以有多个对象的,每个对象都是相互独立的;这句话代码中有什么体现呢我们来看以下
代码演示:
package com.test.demo1;
// Test类中添加主函数 用来 通过 Teacher类 实例化对象 演示对象和类的使用
public class Test1 {
public static void main(String[] args) {
// 通过Teacher类实例化对象 tea1
Teacher tea1 = new Teacher(); // 这行代码叫做实例化对象 语法: 类名 对象名 = new 类名();
// 给 tea1对象的 name属性赋值
tea1.name = "张三";
// 输出tea1 对象的 name属性
System.out.println(tea1.name);
// 通过tea1 调用方法 讲课
tea1.toTeach(4); // 讲课方法
System.out.println("--------");
// 通过Teacher类实例化对象 tea2
Teacher tea2 = new Teacher(); // 这行代码叫做实例化对象 语法: 类名 对象名 = new 类名();
// 输出 tea2 的name属性
System.out.println(tea2.name);
// 通过tea1 调用方法 讲课
tea2.toTeach(4); // 讲课方法
}
}
运行结果:
分析一波:代码中我们先实例化了tae1 ,对象的name赋值为 “张三”。之后输出调用方法中的name值都是张三。第二个实例化的对象tea2没有赋值,直接输出了name和调用方法。这时tea2的name值还是 null 默认值。也就是说我们对 tea1 的操作并没有对 tea2 造成影响。每个对象都是相互独立的。