Java是一门面向对象的语言
面向对象分析 OOA
面向对象设计 OOD
面向对象编程 OOP
实体:看得见摸得着的物体 对生活中的实体进行分类
生活中的每一个实体对应着Java中的一个对象
类和对象的关系:
1.类是对象的模板,对象是类的实例
2.一个类可以创建N个对象
3.每个对象都是独一无二的
4.对象和类满足is a的关系
类:
是我们在生活中对身边的事务进行不自觉的分类!在脑海中只是一个定义,生活中不存在,存在的是具体的实例
对象:
用来描述事物的一个实体,由一组属性和方法构成
把一组具有相同属性和行为的一些对象,封装成一个类
面向对象的优势:
1.与我们的思维方式一致
2.提高程序的可重用性
3.隐藏对象的内部细节,提高程序的维护性和安全性
直接写在类中的属性 全局变量,有默认值
局部变量没有默认值,不赋予初始值不能直接使用
所有的访问权限修饰符:
1.public 公共的,级别最宽松
2.protected 受保护的,只能在子类中访问
3.default 默认的访问权限,没有这个单词,仅限于本包中访问
4.private 私有的,级别最严的,只能本类中访问
访问权限修饰符可以定义在全局变量和方法上
步骤:
1.创建对象 实例化对象
类名 对象名=new 类名();//实例化一个对象,调用无参构造
只要有(),就说明是一个方法
类名()----构造方法,
只有构造方法才能构造出一个类的实例
例: new Student();
通过构造方法来创建类的实例
疑问 在Student类中并没有Student()方法,系统会默认给我们创建类的无参 构造方法
2.使用对象的属性和方法
对象名.属性名
对象名.方法名
Java中没有指针的概念,示意图中的箭头只是一种比喻,在Java中指针我们称之为引用
null是所有引用类型的默认值,不能点出来任何内容,只要点出来,就会出现 NullPointException(空指针异常)
调用对象某个方法的时候,给方法的东西叫参数
调用对象的某个方法,返回的东西就是返回值
无参构造:
访问修饰符+类名===构造方法 用来创建对象的实例
绝对不允许加返回值
new 类名();//实例化一个对象,调用无参构造
带参构造:
目的:在创建对象的同时,给对象的各个属性赋值
(int age,String name)参数列表
1.int age,String name形参
2.必须有数据类型
3.实参的参数列表和顺序必须和形参一致
this:当前对象
this.age=age;将用户传递过来的局部变量赋值给成员变量
在成员变量和局部变量同名的时候,使用this来区分
项目代码,阅读顺序
1.bean
2.test
3.login
4.demo
5.paramater
参数的传递
1.基本数据类型+String,作为参数传递,传递的都是值
2.引用数据类型,作为参数传递,传递的内存地址 (数组属于引用数据类型)
对象数组:
对象类型的数组
public class Student {
static Scanner input=new Scanner(System.in);
//int age;
String name;
//创建Student类型的数组
Student[] stu=new Student[5];
/**
* 定义一个方法,给数组中的每个对象的属性赋值
*/
public void addStudent(){
for (int i = 0; i < stu.length; i++) {
//实例化数组中的每个元素
stu[i]=new Student();
System.out.println("请输入第"+(i+1)+"个学生的姓名:");
stu[i].name=input.next();
//System.out.println("请输入第"+(i+1)+"个学生的年龄:");
//stu[i].age=input.nextInt();
}
}
/**
* 遍历对象数组中的每个对象的数据
*/
public void showStudent(){
System.out.println("****学生信息如下****");
for (Student s : stu) {
System.out.println(s.name);
}
}
/**
* 修改学生姓名
*/
public void changeName(String oldName,String newName){
boolean flag=false;
for (int i = 0; i < stu.length; i++) {