1. 万物皆对象
万物皆对象是指可以将自然界中的任何事物都理解为一个对象。分析其共有的特征,称之为属性;分析其共有的行为,称之为方法。
类是由属性和方法组成的。
类是对象的抽象,对象是类 的具体。
package com.qfedu.test1;
/**
* 学生类
* 类的组成包括:属性和方法
* 属性:一组对象共同拥有的特征,称之为属性
* 方法:一组对象共同拥有的行为,称之为方法
*
* 属性:
* 姓名
* 年龄
* 学号
* 性别
* 身高
* 班级
* 体重
* 专业
* ……
*
* 行为:
* 学习
* 吃饭
* 睡觉
* 打游戏
* ……
*
* @author WHD
*
*/
public class Student {
String name;
int age;
String studentNo;
char sex;
double height;
String gradeName;
double weight;
String profession;
public void study() {
System.out.println("努力学习");
}
public void eat() {
System.out.println("吃饭");
}
public void sleep() {
System.out.println("睡觉");
}
public void playGame() {
System.out.println("打游戏");
}
}
3.创建和使用对象
package com.qfedu.test2;
/**
* 学生类
* 类和对象的关系:类的对象的抽象,对象是类的具体
* 类的组成包括:属性和方法
* 属性:一组对象共同拥有的特征,称之为属性
* 方法:一组对象共同拥有的行为,称之为方法
*
* 属性:
* 姓名
* 年龄
* 学号
* 性别
* 身高
* 班级
* 体重
* 专业
* ……
*
* 行为:
* 学习
* 吃饭
* 睡觉
* 打游戏
* ……
*
* @author WHD
*
*/
public class Student {
String name;
int age;
String studentNo;
char sex;
double height;
String gradeName;
double weight;
String profession;
public void study() {
System.out.println(name + "努力学习");
}
public void eat() {
System.out.println(name + "在吃饭");
}
public void sleep() {
System.out.println(name + "在睡觉");
}
public void playGame() {
System.out.println(name + "在打游戏");
}
public void printInfo() {
System.out.println("我的名字是:" + name);
System.out.println("我的年龄是:" + age);
System.out.println("我的身高是:" + height);
System.out.println("我的体重是:" + weight);
System.out.println("我的学号是:" + studentNo);
System.out.println("我的性别是:" + sex);
System.out.println("我的专业是:" + profession);
System.out.println("我的班级是:" + gradeName);
}
public static void main(String[] args) {
// 1.先new对象 类名 对象名 = new 类名();
Student stu1 = new Student();
// 2.通过对象名.属性名 对属性赋值
stu1.name = "赵四";
stu1.age = 18;
stu1.height = 180.5;
stu1.sex = '男';
stu1.studentNo = "zz0001";
stu1.profession = "形体艺术";
stu1.gradeName = "三年二班";
stu1.weight = 70;
// 3.通过对象名.方法名 访问对象的行为 (方法)
stu1.study();
stu1.sleep();
stu1.eat();
stu1.playGame();
stu1.printInfo();
System.out.println("----------------------------------------");
Student stu2 = new Student();
stu2.name = "广坤";
stu2.age = 20;
stu2.height = 175;
stu2.profession = "语言艺术";
stu2.sex = '男';
stu2.gradeName = "三年二班";
stu2.weight = 65;
stu2.studentNo = "zz0002";
stu2.study();
stu2.sleep();
stu2.playGame();
stu2.eat();
stu2.printInfo();
}
}
4.实例变量
实例变量,也叫成员变量,也叫属性
描述 | 实例变量 | 局部变量 |
---|---|---|
定义位置 | 直接写在类中 | 方法中 |
默认值 | 默认值与数组相同 | 没有默认值 |
作用范围 | 整个类中 | 离当前变量最近的大括号以内 |
命名冲突 | 可以与局部变量重名,就近原则 | 重合的作用范围,不能重名 |
存储位置 | 全部存储在堆中,所以才有默认值 | 基本数据类型,存在栈中;引用数据类型,名字在栈,值在堆中 |
生命周期 | 随着创建对象而生效,随着对象被垃圾回收而死亡 | 随着方法的入栈而生效,随着方法的出栈而死亡 |
5. 方法重载
方法重载:
1.同一个类中
2.方法名称相同,
3.参数列表不同(包括参数的个数、类型、顺序有一个不同即可称之为不同),
<访问修饰符,返回值是否相同不作为方法重载的参考条件>
这种情况,称之为方法重载
调用带有重载的方法时,需要根据传入的实参去找到与之匹配的方法。 好处:屏蔽使用差异,灵活、方便。
package com.qfedu.test4;
import java.util.Arrays;
/**
* 方法重载:
* 1.同一个类中
* 2.方法名称相同,
* 3.参数列表不同(包括参数的个数、类型、顺序有一个不同即可称之为不同),
* <返回值是否相同不作为方法重载的参考条件>
* 这种情况,称之为方法重载
* @author WHD
*
*/
public class Calc {
// public void add(int a,String s) {
//
// }
public void add(int num,String str) {
}
public int add(String str,int num) {
return 0;
}
public int add(int a,int b) {
return a + b;
}
public int add(int a,int b,int c) {
return a + b + c;
}
public int add(int a,int b,int c,int d) {
return a + b + c + d;
}
public int add(int a,int b,int c,int d,int e) {
return a + b + c + d + e;
}
public static void main(String[] args) {
Calc calc = new Calc();
calc.add(10, 20);
calc.add(10, 20, 30);
calc.add("a", 20);
}
}
6. 构造方法
构造方法:用于创建对象的特殊方法
构造方法语法:访问修饰符(public) + 类名(形参列表){}
普通方法语法:访问修饰符(public) + 返回值类型 + 方法名(形参列表){}
无参构造,JVM默认提供。如果书写了有参构造,那么无参构造将会被覆盖,想要使用,手动书写。
构造方法重载规则与方法重载一致,只有一条要求,参数列表不同。
package com.qfedu.test6;
/**
* 名字
* 年龄
* 性别
*
* 无参构造,JVM默认提供。如果书写了有参构造,那么无参构造将会被覆盖,想要使用,手动书写。
* 构造方法重载规则与方法重载一致,只有一条要求,参数列表不同。
* @author WHD
*
*/
public class Person {
String name;
int age;
String sex;
public void printInfo() {
System.out.println("名字是:" + name + ",年龄:" + age + ",性别是:" + sex);
}
public Person(String n,int a,String s) {
System.out.println("全参构造方法1");
sex = s;
age = a;
name = n;
}
public Person(int a,String s,String n) {
System.out.println("全参构造方法2");
sex = s;
age = a;
name = n;
}
public Person() {}
public static void main(String[] args) {
Person p1 = new Person();
p1.name = "赵四";
p1.age = 20;
p1.sex = "男";
p1.printInfo();
System.out.println("--------------------------");
Person p2 = new Person("大拿", 20,"男");
p2.printInfo();
System.out.println("--------------------------");
Person p3 = new Person(20, "男", "小宝");
p3.printInfo();
}
}