1.面向对象
1.1 面向对象的特点
封装、继承、多态
1.2 面向对象的概念
1.抽象 ----abstract
从具体的事物中,抽离出同一类事物普遍具有的性质,这一过程叫抽象
2.class--类
1.属性---成员属性/成员变量
2.方法---成员方法
3.对象---具体实现类
类是对象的模板,对象是类的具体实现
2.什么是面向对象
面向过程——步骤化
面向过程就是分析出实现需求所需要的步骤,通过函数(方法)一步一步实现这些步骤,接着依次调用即可
面向对象——行为化(概念相对抽象,可结合下面的例子理解)
面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成类(类实例化后才是对象),创建了对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为
3.成员变量和局部变量
1位置不同
1.1 在类中的位置不同
成员变量:在类中
局部变量:在方法中
1.2 在内存中位置不同
局部变量:在栈内存中
成员变量:在堆内存中
2.声明周期不同
成员变量:依赖于对象,对象存在它存在,对象消失它消失
局部变量:依赖于方法,方法调用它存在,方法结束它消失
3.所属对象不同:
成员变量:属于对象
局部变量:属于方法
4.使用方式不同:
成员变量:通过对象使用
局部变量:通过方法使用
*成员变量如果和局部变量重名,采用就近原则,有局部变量就用局部变量,没有就用成员变量
4.构造方法
1.有参--初始化成员属性,生成对应的类对象,有参构造方法存在时,java编译器不会自己生成无参构造
2.无参--可以不写,如果类中没有写构造方法,由java编译器自己生成,也可以自己手动写
3.注意事项
1.如果已经写了有参的构造⽅法, 编译器就不会再加上空参的构造了
2.这时,如果还想使⽤空参的构造, 那么,就需要⼿动补上空参构造
3.构造⽅法必须通过**new**关键字来调⽤, 不可以使⽤对象名来调⽤
4.构造⽅法也是成员⽅法, 只是⽐较特殊⽽已, 所有成员⽅法的属性构造⽅法也拥有
5.创建对象的时候, 只能调⽤⼀个构造⽅法,但构造⽅法内部可以相互调⽤
6.本类中的成员⽅法⽆法直接调⽤构造⽅法
4.有参构造可以在创建对象的同时,初始化对象的成员属性
//创建数组,存放输入的学生信息
public class StudentTest {
public static void main(String[] args) {
//创建一个Student类的数组
Student[] students=new Student[3];
//创建scanner对象
Scanner scanner=new Scanner(System.in);
for (int i = 0; i < students.length; i++) {
System.out.println("请输入姓名:");
String name=scanner.next();
System.out.println("请输入年龄:");
int age=scanner.nextInt();
System.out.println("请输入班级:");
String classes=scanner.next();
//有参构造方法创建对象
Student student=new Student(name,age,classes);
//给数组元素赋值
students[i]=student;
}
for (int i = 0; i < students.length; i++) {
System.out.println("第"+(i+1)+"个元素 "+students[i].name+"\t"+students[i].age+"\t"+students[i].classes);
}
}
}