概述:
类:类是一组相关属性和行为的集合;类就是现实生活的一个事物,事物由属性和行为组成。
对象:对象是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为。
类和对象的关系:类是对象的抽象,对象是类的具体实现;类是抽象的,不占内存;对象是具体的,占用存储空间。
类:
类声明的脑图分析:
属性:属性分为成员变量和局部变量;成员变量是在类中,方法之外定义的变量;局部变量是在方法中声明的变量。
以下字段为成员变量:String name;int age;String sex;以下字段为局部变量:String ID = "202200205";
publicclassStudent { // 1.定义学生的属性Stringname; intage; Stringsex; // 2.定义学生能实现的方法publicvoidlearning(){ StringID="202200205"; System.out.println(name+",可以好好学习!"); } }
常量:用final关键字修饰的变量就是常量!常量一旦赋值是不能改变的,常量通常用全大写定义。
注:如果声明一个变量为常量,就必须在声明结束后直接赋值,否则编译无法通过。
//常量可以自定义但是有些类中,会有自己的常量 final String ID = "202200205";
以Math类,举例查看其中自定义好的常量;
注:Java类中已经定义好的常量一般都是具有特殊含义;所以定义为常量供用户选择;此处的常量由 static final 修饰,则此常量为终极常量,被static定义的常量/方法可以直接由 类名.常量名 调用。
publicstaticvoidmain(String[] args) { System.out.println(Math.PI); //方法名.常量名,即可实现输出常量值}
方法/行为:就是在类中定义的一系列操作;
如下在 Student 学生类中定义了 学习和吃饭 的方法,在类中可以定义多个不同名方法;注意:方法名不能和;类名相同,如果方法名和类名相同则为构造方法。
publicclassStudent { // 1.定义学生的属性Stringname; intage; Stringsex; // 2.定义学生能实现的方法publicvoidlearning(){ StringID="202200205"; System.out.println(name+",可以好好学习!"); } publicvoideat(){ System.out.println(name+"吃饭!"); } }
构造方法:分为无参构造方法和有参构造方法。
每次新建一个类,系统都会自动给该类生成一个无参的构造方法,供用户调用;但是有参方法需要手动创建;
注:如果自定义了一个有参构造方法的时候,系统则不会给该类再默认生成一个无参的构造方法了,需要手动创建一个无参构造方法。
构造方法的重写
重写:前提,有继承关系。子类继承父类中方法,就是重写;
重写,子类重写父类中的方法,要求子类重写父类的方法的方法名和参数列表必须和父类保持一致。
//自定义一个学生类publicclassStudent { // 1.定义学生的属性Stringname; intage; Stringsex; // 2.定义学生能实现的方法publicvoidlearning(){ StringID="202200205"; System.out.println(name+",可以好好学习!"); } publicvoideat(){ System.out.println(name+"吃饭!"); } // 3.无参构造方法publicStudent(){ System.out.println("我是无参构造方法!"); } // 4.有参构造方法publicStudent(Stringname,intage){ this.name=name; //此处是直接把传递进来的形参赋值给成员变量this.age=age; } }
//自定义一个学生类的实现类publicclassStudentAchieve { publicstaticvoidmain(String[] args) { // 1.使用无参构造方法实例化对象Studentstu1=newStudent();//此处默认调用无参构造方法 stu1.name="张三"; stu1.age=66; stu1.sex="男"; //2.调用Student类中的方法stu1.learning(); stu1.eat(); // 3.使用有参构造方法实例化对象Studentstu2=newStudent("李四",66); //4.调用Student类中的方法stu2.learning(); stu2.eat(); } }
对象:
实例对象的脑图分析:
对象是类的实例化!
注:一个类可以new多个对象,但是每个对象的对象名不同!
上一期讲了Java中的内存分配,所以对于成员变量和局部变量的存储位置,相信大家都有了更加深刻的了解,只要是new出来的对象都存放在堆内存之中。