9. 类和对象
9.1 类
9.1.1 类的定义
类是具有相同属性和方法的具体实例的集合,类是对象的抽象,对象是类的具体实例
9.1.2 类语法
public class 类名{
// 1. 属性
public 变量的类型 变量名称1;
public 变量的类型 变量名称2;
...
// 2. 方法
public void 方法1(){}
public void 方法2(){}
...
}
9.1.3 类图
- 类的图形化表示方式
9.1.4 创建类
package cn.bdqn;
/**
* 学校类School 包含学校名称、学校地址、教室数量属性和显示学习信息的方法
*
* @author 强哥
* 2023-05-25
*/
public class School {
// 1. 定义属性
public String schoolName; // 学校名称
public String address; // 学校的地址
public int roomCount; // 教室数量
public int age = 21; // 创办年数
// 2. 定义方法 5个要素:修饰符public 返回值类型void 方法名称showInfo 形参列表() 方法体{}
public void showInfo(int a,String args,double num) {
// 方法中this指的是当前方法调用的对象,是当前类的具体实例对象
System.out.println("学校名称:" + this.schoolName);
System.out.println("学校地址:" + this.address);
System.out.println("教室数量:" + this.roomCount);
}
}
9.2 对象
9.2.1 对象的定义
对象: 描述客观事实的实体,由一组属性和方法组成
。
9.2.2 对象的属性
属性: 是对象具有特征,如张浩同学的特征:年龄,性别,身高,体重,爱好,手机号,qq,邮箱 ,微信…
9.2.3 对象的方法
- **方法:**对象执行功能,实际就是方法体对应的代码
- 方法5要素:
- 方法的修饰符: public 、private、static…
- 方法的返回值类型: void、String[] 、double、School…
- 方法名称: showInfo、task1、demo1…
- 方法的形式参数列表 :(int a,String args,double num) 中间定义的局部变量称形式参数列表
- 方法体:{}之间的代码块
9.2.4 创建对象
public static void main(Srting[] str){
// 1. 创建对象
School sc = new School();
}
9.2.5 调用对象属性
public static void main(Srting[] str){
// 1. 创建对象
School sc = new School();
// 2. 调用属性
sc.schoolName = "北大青鸟合肥协同教育学院";
sc.address = "安徽省合肥市蜀山区琥珀街道长江西路130号安徽农业大学科技长廊5楼";
sc.roomCount = 25;
sc.age = 21;
System.out.println("age=" + sc.age); // age=21
}
9.2.6 调用对象方法
public static void main(Srting[] str){
// 1. 创建对象
School sc = new School();
// 2. 调用属性
sc.schoolName = "北大青鸟合肥协同教育学院";
sc.address = "安徽省合肥市蜀山区琥珀街道长江西路130号安徽农业大学科技长廊5楼";
sc.roomCount = 25;
sc.age = 21;
System.out.println("age="+sc.age); // age=21
// 3. 调用方法
sc.showInfo();
}
10. 方法及方法重载
10.1 方法
10.1.1 方法的定义
-
在类中定义功能代码块称方法,方法中封装了一些为解决某个问题而编写的代码片段,可以反复使用
-
语法
修饰符 返回值类型 方法名称(形参列表){ ... 方法体 ... retrun 返回值; }
public static String getMsg(int age, String name, String msg) { // 方法体 String result = null; if(age > 18) { result = name + ", 恭喜你成年了," + msg; }else{ result = name + ", 你还未成年," + msg; } // 返回值 return result; }
10.1.2 方法的5要素
-
修饰符 public ,static,private,protected,默认的(没有修饰符)
-
返回值类型 String ,void,int…
-
方法名称 getMsg
-
形参列表 int age, String name, String msg
-
方法体 {}中包括的程序代码
10.1.3 方法的分类
-
实例方法 和 类方法
public class Person{ // 实例方法,只能使用对象进行调用 public double getNum(double a, double b){ return a + b; } // 类方法(静态方法), 通过类名和对象调用 public static String getName(String firstName, String lastName){ return firstName + lastName; } }
-
有参方法 和 无参方法
public class Person{ // 无参方法 public double getNum(){ return 10; } // 有参方法 public double getNum(double a, double b){ return a + b; } }
-
有返回值方法 和 无返回值方法
public class Person{ // 无返回值方法 public void getNum(){ System.out.println(10); } // 有返回值方法 public double getNum(double a, double b){ return a + b; } }
-
构造方法
public class Person { // 构造方法 public Person(){ } // 无返回值方法 public void getNum(){ System.out.println(10); } // 有返回值方法 public double getNum(double a, double b) { return a + b; } // 类方法(静态方法) 通过类名和对象调用 public static void setNum(int a ){ System.out.println(a * 10); } }
10.1.4 方法的调用
-
实例方法调用:使用类的对象调用方法
Person person = new Person(); person.getNum(); double res = getNum(1, 2); System.out.println(res); // 3
-
类方法调用: 通过类名或对象调用方法
Person person = new Person(); Person.setNum(10); // 100 person.setNum(20); // 200
-
构造方法调用:用于创建对象的方法
Person person = new Person();
10.2 有参方法
10.2.1 有参方法语法
public class Calculator {
public void add (int a, int b) {
System.out.println(a + b);
}
}
- 方法add中的小括号中的
int a,int b
就是方法 的形参列表,是调用时等待赋值的局部变量
10.2.2 有参方法调用
public static void main(String[] args) {
Calculator cal = new Calculator();
cal.add(1, 2); // 3
}
- 先创建Calculator类的对象 cal = new Calculator();
- 通过对象cal调用方法add(1,2),传递两个参数1,2称实参,分别赋值给int a=1; int b = 2;
- 执行方法体:输出结果 3
10.3 构造方法
10.3.1 构造方法语法
public class Dog {
private String name;
private int age;
private int love; // 亲密度
private int health; // 健康值
// 修饰符 + 类名 组成的方法称构造方法
public Dog(){
}
}
10.3.2 构造方法作用
-
构造方法用 new 指令创建对象
Dog dog = new Dog(); // 使用new创建对象
-
构造方法中可以对对象的属性进行初始化 或 执行其它功能
// 构造方法 public Dog(