一、面向对象
1、对象是具有明确的行为(方法)和特征(属性|变量)的实体
2、对象的行为:指的是方法,代表对象能干什么
对象的特征:指的是属性,代表对象有什么
二、类和对象
1、创建类:确定类名>>编写成员变量>>编写成员方法
2、创建对象: 类名 对象名 = new 类名();
创建对象是在主程序中创建
//创建类:不在主程序中
public class Student { //学生对象模板
//属性(变量) 成员属性(变量)
String name;
int age;
String sex;
double score;
//方法 成员方法
public void study() {
System.out.println("学习");
}
public void sleep() {
System.out.println("睡觉");
}
}
//创建对象
public class TestStudent {
public static void main(String[] args) {
//创建Student对象
Student stu = new Student();
//使用对象(1、给对象属性赋值和取值 2、调用对象的方法)
//给对象属性赋值
stu.name = "张三";
stu.age = 20;
stu.sex = "男";
stu.score = 100;
//对象属性取值
System.out.println(stu.name);
System.out.println(stu.age);
System.out.println(stu.sex);
System.out.println(stu.score);
//调用对象的方法
stu.study();
stu.sleep();
//============================================================
Student stu1 = new Student();
//重复上面的事情
}
}
3、类和对象的关系
类:定义了对象应具有的特征和行为,类是对象的模板
对象:拥有多个相同特征和行为的实体,对象是类的实例
面向对象就是从具体到抽象,再从抽象到具体的过程
三、实例变量和局部变量
区别 | 局部变量 | 实例变量 |
---|---|---|
位置 | 定义在方法内 | 定义在方法外,类的里面 |
默认值 | 没有默认值 | 系统提供默认值,与之前讲的数组一致 |
作用域 | 所在的{} | 在整个类中 |
重名 | 在不同的作用域可以重名 | 不能重名 |
生命周期 | 方法执行完被销毁 | 当对象被销毁的时候销毁 |
PS:局部变量和实例变量重名时,java遵循就近原则
四、方法的重载
在同一个类中,方法名相同,参数不同(参数的数量或类型)
五、构造方法
1、默认存在一个无参构造
2、当构造一个有参构造时,原来系统的无参构造消失,因此通常保留一个无参构造
3、构造方法名必须与类名完全一致
方法:右键>>Generate...>Constructor>
Select None 为无参构造
OK 为有参构造,可选参数数量
六、this关键字
1、表示当前类,在当前类中可以省略
2、当成员变量和局部变量重名时,就近原则
3、调用方法:this.方法名(); 必须在第一行
七、综合案例
使用对象数组完成用户登录注册操作
1、主函数
2、构造
3、
附程序:
import java.util.Arrays; public class UserManage { User[] users={}; int size=0; //判断是否存在 public boolean isCZ(String name){ for (int i = 0; i < size; i++) { if(name.equals(users[i].name)){ return true; } } return false; } //注册 public boolean zhuce(User user){ boolean flag=isCZ(user.name); if(flag){ System.out.println("该账号已存在,注册失败!"); return false; } if(size==users.length){ users= Arrays.copyOf(users,users.length+1); } users[size]=user; size++; return true; } //输出 public void pri(){ for (int i = 0; i < size; i++) { System.out.println("姓名为:"+users[i].name+"\t"+"密码为:"+users[i].password); } } //登录 public boolean denglu(User user){ if(!isCZ(user.name)){ System.out.println("该用户不存在"); return false; }else{ for (int i = 0; i < size; i++) { if(user.name.equals(users[i].name) && user.password==users[i].password){ System.out.println("登陆成功"); return true; }else{ System.out.println("登陆失败"); } } } return false; } }
4、管理操作界面
import java.util.Scanner; public class View { public void view(){ UserManage um=new UserManage(); Scanner sc=new Scanner(System.in); System.out.println("----------------欢迎进入登陆系统----------------"); while(true){ System.out.println("1、注册\t2、登录\t3、查询\t4、退出"); int choose=sc.nextInt(); switch (choose){ case 1: System.out.println("请输入用户名:"); String name=sc.next(); System.out.println("请输入密码:"); int password=sc.nextInt(); User user1=new User(name,password); um.zhuce(user1); break; case 2: System.out.println("请输入用户名:"); String name2=sc.next(); System.out.println("请输入密码:"); int password2=sc.nextInt(); User user2=new User(name2,password2); um.denglu(user2); break; case 3: um.pri(); break; case 4: System.out.println("退出成功"); return; } } } }