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