1.万物皆对象
万物皆对象是指我们可以将任何的事物都分析出属性和行为,理解为对象
2.类和对象的关系
类是对象的抽象,对象是类的具体。
由类衍生出对象
3.属性和方法
属性:一些事物共有的特征,称之为属性
方法:一些事物共有的动作,称之为方法
4.创建类和对象
package com.qfedu.test2;
/**
* 学生类
* 属性:姓名、性别、学号、爱好……
* 方法:学习、吃饭、睡觉
* @author Admin
*
*/
public class Student {
String name;
char sex;
String stuNo;
String hobby;
public void stduy() {
System.out.println("学生喜欢学习");
}
public void eat() {
System.out.println("学生喜欢吃饭");
}
public void sleep() {
System.out.println("学生喜欢睡觉");
}
public static void main(String[] args) {
Student stu1 = new Student();
stu1.name = "张三";
stu1.sex = '男';
stu1.stuNo = "aa111";
stu1.hobby = "学习";
System.out.println("姓名:"+stu1.name);
System.out.println("性别:"+stu1.sex);
System.out.println("学号:"+stu1.stuNo);
System.out.println("爱好:"+stu1.hobby);
stu1.stduy();
stu1.eat();
stu1.sleep();
System.out.println("------------------");
Student stu2 = new Student();
stu2.name = "李四";
stu2.sex = '男';
stu2.stuNo = "bb222";
stu2.hobby = "吃饭";
System.out.println("姓名:"+stu2.name);
System.out.println("性别:"+stu2.sex);
System.out.println("学号:"+stu2.stuNo);
System.out.println("爱好:"+stu2.hobby);
stu2.stduy();
stu2.eat();
stu2.sleep();
}
}
打印详细的信息,将属性使用到方法中
package com.qfedu.test3;
/**
* 学生类
* 属性:姓名、性别、学号、爱好……
* 方法:学习、吃饭、睡觉
* @author Admin
*
*/
public class Student {
String name;
char sex;
String stuNo;
String hobby;
public void stduy() {
System.out.println("学生喜欢学习");
}
public void eat() {
System.out.println("学生喜欢吃饭");
}
public void sleep() {
System.out.println("学生喜欢睡觉");
}
public void introduce() {
System.out.println("我的名字叫"+name+",性别是"+sex+",学号是"+stuNo+",爱好是"+hobby);
}
public static void main(String[] args) {
Student stu1 = new Student();
stu1.name = "张三";
stu1.sex = '男';
stu1.stuNo = "aa111";
stu1.hobby = "学习";
stu1.introduce();
System.out.println("-------------------------------------");
Student stu2 = new Student();
stu2.name = "李四";
stu2.sex = '男';
stu2.stuNo = "bb222";
stu2.hobby = "吃饭";
stu2.introduce();
}
}
4.实例变量与局部变量的区别
实例变量 | 局部变量 |
---|---|
定义位置 | 类中 |
作用范围 | 整个类中 |
默认值 | 有默认值,与数组相同 |
重名 | 可以与局部变量重名,局部变量优先使用,就近原则 |
生命周期 | 随着对象的创建而存在,随着对象被垃圾回收而死亡 |
存储位置 | 实例变量存储在堆中 |
5.方法重载
1.在一个类中
2.方法名称相同
3.参数列表不同,包括参数的个数、类型、顺序,有一个不同即可称为不同
4.跟返回值、访问权限修饰符无关
public class Test1 {
public int add(int a ,String str) {
return 1;
}
public int add(String str , int a) {
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 int add(int a,int b,int c,int d,int e,int f) {
return a + b + c + d + e + f;
}
public static void main(String[] args) {
Test1 t1 = new Test1();
t1.add(10, 20, 30);
System.out.println(t1.add(10, 20));
}
}
6.构造方法
6.1概念
构造创建,用于创建对象的特色方法,只能在创建对象时调用,且默认调用无参构造
构造方法书写格式:访问修饰符 + 类名(形参列表){}
普通方法书写格式:访问修饰符 + 返回值类型 + 方法名称(形参列表){}
6.2无参构造
无参构造是默认存在,不管是否书写都有
public class Student {
String name;
int age;
String gradeName;
String hobby;
public void print() {
System.out.println("名字" + name + ",年龄" + age + ",爱好" + hobby + ",班级" + gradeName);
}
public Student() {
System.out.println("Student类无参构造执行了");
}
public static void main(String[] args) {
Student stu1 = new Student();
stu1.name = "赵四";
stu1.age = 17;
stu1.gradeName = "三年二班";
stu1.hobby = "尬舞";
}
}
6.3有参构造
我们在创建对象的同时,可以给属性赋值,使用有参构造
无参构造是默认存在,如果书写了有参构造,那么默认的无参将被覆盖
public class Student {
String name;
int age;
String gradeName;
String hobby;
public void print() {
System.out.println("名字" + name + ",年龄" + age + ",爱好" + hobby + ",班级" + gradeName);
}
public Student() {
System.out.println("Student类无参构造执行了");
}
public Student(String n,int a,String gname,String h) {
name = n;
age = a;
gradeName = gname;
hobby = h;
}
public Student(int a) {
age = a;
}
public Student(String n,int a) {
name = n;
age = a;
}
public Student(int a,String n) {
name = n;
age = a;
}
public static void main(String[] args) {
Student stu3 = new Student(20, "大拿");
stu3.gradeName = "三年二班";
stu3.hobby = "理财";
stu3.print();
Student stu2 = new Student("广坤", 15, "三年二班", "口技");
stu2.print();
}
}
6.4构造方法重载
与普通方法重载规则类似
构造方法都是类名,没有返回值,与访问权限无关,所以只要求参数列表不同(参数的个数、类型、顺序)。
7.this关键字
this关键字表示当前对象
适用场景:
1.访问属性
2.访问方法
3.访问构造方法,this访问构造方法必须在其他构造方法中第一句,只能使用一次
public class Student {
String name;
int age;
String gradeName;
String hobby;
public void printName() {
System.out.println("名字是" + name);
}
public void printAge() {
System.out.println("年龄是" + age);
}
public void print() {
printName();
printAge();
System.out.println("年龄" + age + ",爱好" + hobby + ",班级" + gradeName);
}
/**
* 回顾之前写的构造方法 名称书写不规范 不符合见名知意的规则 所以我们将参数名称修改
* 修改完以后 发现不能正常赋值了 因为使用的都是局部变量
* @param name
* @param age
* @param hobby
* @param gradeName
*/
public Student(String name,int age,String hobby,String gradeName) {
// this.name = name;
// this(name);
// this.age = age;
// this(name, age);
// this.hobby = hobby;
this(name, age, hobby);
this.gradeName = gradeName;
}
public Student(String name,int age,String hobby) {
this(name, age);
this.hobby = hobby;
}
public Student(String name,int age) {
this(name);
this.age = age;
}
public Student(String name) {
this.name = name;
}
public Student() {}
public static void main(String[] args) {
Student stu1 = new Student("赵四",17,"尬舞","三年二班");
stu1.print();
}
}