目录
课程目标:
写完本次课程后,你能够:
- 掌握类和创建对象的关系
- 定义类
- 定义对象
- 定义和调用方法
7.1、面向对象的基本概念
java语言是一种面向对象的语言。
面向对象的三大特征:
- 封装
- 继承
- 多态
7.2、类和对象
7.2.1、定义类
(1) 定义类:
语构:
[访问权限修饰符]class 类名{
//操作代码
}
示例
public class Dog{
//操作代码
}
- 访问权限修饰符如public、private等都是可选的
- class是声明类的关键字
- 按照命名规范,类名首字符大写
7.2.2、类和对象的概念
对象:客观存在的一个实体(你能够看得见摸的着的物体都乐意看成是对象),具有属性和方法
- 属性:描述的是对象的特征
- 方法:描述的是对象的功能
类:具有相同属性和方法的一组对象的集合
- 类对对象的抽象
- 对象是类的具体
7.2.3、类和对象的创建和使用
7.2.2.1、声明属性:
访问权限修饰符 数据类型 属性名; 或:
访问权限修饰符 数据类型 属性名=数据
例如:public String tybe ="1";
注:属性的访问权限修饰符可以是public、protected、private、默认(什么都不写)
示例:
public class Dog{ //定义“狗”类
//声明属性
public String type; //种类
public int age; //年龄
public String color; //颜色
//声明方法
public void bark(){
system.out.println("汪汪汪...............");
}
}
7.2.2.2、声明方法:
访问权限修饰符 返回值类型 方法名(数据类型 变量名1,数据类型 变量名2,....,数据类型 变量名n){
//描述方法实现功能的代码
}/*
* 方法的定义语法:
* 访问权限修饰符 返回值类型 方法名(数据类型 变量名1,数据类型 变量名2,....,数据类型 变量名n){
* //描述方法实现功能的代码
* }*
* 访问权限修饰符:
* public(公共的)
* protected(受保护的)
* private(私有的)
* :默认值
* 返回值类型:
* 方法可以返回给你的结果类型,可以是8大基本数据类型,也可以是引用数据类型
* 如果方法没有返回值,那么些void(空)
* ()里的称之为参数列表,参数可以没有,也可以有一个或者多个,多个之间使用,隔开;参数的数据类型可以是基本数据类型,也可以是引用数据类型
* {}里的是方法实现功能的具体代码
*
*/例如:public int sum(int num1,num2)
示例
public class Dog{ //定义“狗”类
//声明属性
public String type; //种类
public int age; //年龄
public String color; //颜色
//声明方法
public void bark(){
system.out.println("汪汪汪...............");
}
}
7.2.2.3 、创建对象
类名 对象名 = new 类名();
Dog dog1 = new Dog(); //创建对象
- new是关键字
- 左边的类名为对象的数据类型
- 右边的类名()称为类的构造方法
示例:
Dog dog1 = new Dog(); //创建对象
7.2.2.4、调用属性
对象名.属性名; 或者
对象名.属性名 = 数据;
示例:
public static void main(String[] args) {
// 创建Dog类对象
//创建对象的语法: 类名 对象名 = new 类名();
Dog dog1 = new Dog();
//如何调用对象的属性和方法?
//调用属性: 对象名.属性名; 或者 对象名.属性名 = 数据;
dog1.type = "哈士奇";
dog1.age = 2;
dog1.color = "黑白";
System.out.println("对象dog1的品种:"+dog1.type);
System.out.println("对象dog1的年龄:"+dog1.age+"岁");
System.out.println("对象dog1的颜色:"+dog1.color);
//调用方法:对象名.方法名()
dog1.bark();}
7.2.2.5、 调用方法
对象名.方法名();
dog1.bark();
示例:
public static void main(String[] args) {
// 创建Dog类对象
//创建对象的语法: 类名 对象名 = new 类名();
Dog dog1 = new Dog();
//如何调用对象的属性和方法?
//调用属性: 对象名.属性名; 或者 对象名.属性名 = 数据;
dog1.type = "哈士奇";
dog1.age = 2;
dog1.color = "黑白";
System.out.println("对象dog1的品种:"+dog1.type);
System.out.println("对象dog1的年龄:"+dog1.age+"岁");
System.out.println("对象dog1的颜色:"+dog1.color);
//调用方法:对象名.方法名()
dog1.bark();}
7.2.2.6、案例代码:
(1)设计类:设计类中包含了以下:
声明属性、声明方法
//设计类 package com.bdqn.demo01; //定义了一个类Dog类 public class Dog { /* * 对象:客观存在的一个实体(你能够看得见摸得着的物体都可以看成是对象),具有属性和方法 * 属性:描述的是对象的特征 * 方法:描述的是对象的功能 * 类:具有相同属性和方法的多个对象的集合 * 类对对象的抽象 * 对象是类的具体 */ //声明属性: 访问权限修饰符 数据类型 属性名; 或 访问权限修饰符 数据类型 属性名 = 数据; //属性的访问权限修饰符可以是public protected private 默认(什么都不写) String type; int age; String color; //声明方法 /* * 方法的定义语法: * 访问权限修饰符 返回值类型 方法名(数据类型 变量名1,数据类型 变量名2,....,数据类型 变量名n){ * //描述方法实现功能的代码 * } * 访问权限修饰符: * public(公共的) * protected(受保护的) * private(私有的) * :默认值 * 返回值类型: * 方法可以返回给你的结果类型,可以是8大基本数据类型,也可以是引用数据类型 * 如果方法没有返回值,那么些void(空) * ()里的称之为参数列表,参数可以没有,也可以有一个或者多个,多个之间使用,隔开;参数的数据类型可以是基本数据类型,也可以是引用数据类型 * {}里的是方法实现功能的具体代码 * */ public void bark(){ System.out.println("汪汪汪......"); } }
(2)测试类:
- 创建对象
- 调用属性
- 调用方法
//测试类 package com.bdqn.demo01; public class DogTest { public static void main(String[] args) { // 创建Dog类对象 //创建对象的语法: 类名 对象名 = new 类名(); Dog dog1 = new Dog(); //如何调用对象的属性和方法? //调用属性: 对象名.属性名; 或者 对象名.属性名 = 数据; dog1.type = "哈士奇"; dog1.age = 2; dog1.color = "黑白"; System.out.println("对象dog1的品种:"+dog1.type); System.out.println("对象dog1的年龄:"+dog1.age+"岁"); System.out.println("对象dog1的颜色:"+dog1.color); //调用方法:对象名.方法名() dog1.bark(); } }
7.3、案例
7.3.1:
//设计类 package com.bdqn.demo01; public class Student { //定义属性 // 访问权限修饰符 数据类型 属性名; public String name; public int age; public String classNo; public String hobby; //定义方法 public String study(){ return "好好学习,天天向上"; } }
//测试类 package com.bdqn.demo01; public class StudentTest { public static void main(String[] args) { // 创建Student对象 // 类名 对象名 = new 类名(); Student zhangsan = new Student(); //给对象属性赋值 对象名.属性名 = 属性值; zhangsan.name = "张三"; zhangsan.age = 22; zhangsan.classNo = "java2216班"; zhangsan.hobby = "篮球"; System.out.println(zhangsan.name+"-"+zhangsan.age+"-"+zhangsan.classNo+"-"+zhangsan.hobby); //调用方法 对象名.方法名() String result =zhangsan.study(); System.out.println(result); /* * 方法的调用规则: * (1)在调用方法的时候,方法有返回值给你,返回给你什么类型的结果,你就要使用对应类型的变量(盒子)去接收这个返回的结果 * (2)在调用有参方法的时候,方法需要什么参数,你就需要传递什么参数,要遵循方法参数列表的定义顺序来传递参数 * Scanner input = new Scanner(System.in); * int num =input.nextInt(); * double num =input.nextDouble(); * String str =input.next(); */ } }
7.3.2:
//设计类 package com.bdqn.demo01; public class Teacher { //定义属性 public String name;//姓名 public String major;//专业方向 public String course;//教授课程 public int teachingAge;//教龄 //定义方法 public String study(){ return "教书育人"; } }
//测试类 package com.bdqn.demo01; public class TeacherText { public static void main(String[] args) { //创建Teacher对象 Teacher wanglaoshi = new Teacher(); //给对象属性赋值 wanglaoshi.name="王老师"; wanglaoshi.major="计算机"; wanglaoshi.course="使用Java语言理解程序逻辑"; wanglaoshi.teachingAge=5; System.out.println("姓名:"+wanglaoshi.name+"-专业方向"+wanglaoshi.major+"-教授课程:"+wanglaoshi.course+"-教龄:"+wanglaoshi.teachingAge); //调用方法 String a=wanglaoshi.study(); System.out.println(a); } }
7.3.3:方法分类:
//方法分类:
/*
* 按照方法是否有返回值,可以将方法分为:
* 有返回值的方法:有返回值的方法需要使用到return关键字将结果返回
* 无返回值的方法:写void表示方法没有返回值
* 按照方法是否有参数,可以将方法分为:
* 有参数的方法。简称有参方法
* 没有参数的方法。简称无参方法
*
* 综上所述:
* 没有返回值的无参方法
* 没有返回值的有参方法
* 有返回值的无参方法
* 有返回值的有参方法
*
*
*///设计类 package com.bdqn.demo02; public class Demo01 { //方法分类: /* * 按照方法是否有返回值,可以将方法分为: * 有返回值的方法:有返回值的方法需要使用到return关键字将结果返回 * 无返回值的方法:写void表示方法没有返回值 * 按照方法是否有参数,可以将方法分为: * 有参数的方法。简称有参方法 * 没有参数的方法。简称无参方法 * * 综上所述: * 没有返回值的无参方法 * 没有返回值的有参方法 * 有返回值的无参方法 * 有返回值的有参方法 * * */ //有返回值的无参方法 public int print(){ return 100; } //无返回值的无参方法 public void show(){ System.out.println("我是一个没有返回值的方法"); } //有返回值的有参方法 //定义一个求两个整数相加的方法 public int sum(int num1,int num2){ return num1+num2; } //定义一个欢迎学员来到北大青鸟的方法 public String welcome(String name){ return "欢迎"+name+"来到北大青鸟"; } }
//设计类 package com.bdqn.demo02; public class DemoText{ public static void main(String[] args) { // 创建Demo01的对象 Demo01 demo = new Demo01(); //有返回值无参数的调用方法: //将print()方法的返回值赋值给变量result int result =demo.print(); System.out.println(result); //无返回值无参数的调用方法: //调用方法(无返回值方法的调用) demo.show(); //有返回值有参数的调用方法: //将sum(20,100)方法的返回值赋值给变量result2 int result2 =demo.sum(20, 100); System.out.println(result2); //有返回值有参数的调用方法 //可在调用方法外部进行变量的赋值 int a =100; int b = 200; int result3=demo.sum(a, b); System.out.println(result3); //有返回值有参数的调用方法 //将welcome()方法的返回值赋值给变量result4 String result4 =demo.welcome("尼古拉斯凯奇"); System.out.println(result4); } }
7.3.4:调用冒泡排序
(1)设计类:在此类中写好数组遍历和冒泡排序从而进行调用
//设计类 package com.bdqn.demo03; public class ArrayMethod { //定义一个方法实现数组遍历 public void printArray(int[] array){ for(int i =0;i<array.length;i++){ System.out.print(array[i]+" "); } } //定义一个方法实现数组排序(冒泡排序) public void sort(int[] array){ //外层循环控制比较的轮数 for (int i = 0; i < array.length-1; i++) { //内层循环控制每一轮的比较次数 for (int j = 0; j < array.length-1-i; j++) { //比较,交换位置 if(array[j]>array[j+1]){ int temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } } } }
(2)测试类:在此类中,调用方法实现
//测试类 package com.bdqn.demo03; import java.util.Arrays; public class ArrayMethodText { public static void main(String[] args) { // 创建对象,调用方法 ArrayMethod am = new ArrayMethod(); // 声明一个int类型的数组 int[] nums = { 11, 78, 54, 29, 80, 44, 55 }; // 遍历数组 am.printArray(nums); System.out.println(); // 排序 am.sort(nums); // 遍历数组 am.printArray(nums); int[] nums2 = {22,3,44,5,1,90,23}; am.sort(nums2); System.out.println(); // 遍历数组 am.printArray(nums2); } }