类和对象
- 真实物体(认识)——>抽象成类——>程序运行过程(对象)
- 表格上面的属性一起被称为“类”,就是模板(一类对象的模板)系统可以根据这个模板来构建一个对象
- 每一条数据就是一个对象(实例 instance)
- 属性用来定义类或该类的对象包含的数据或者静态特征。属性作用范围是整个类体咋定义成员变量时可以对其初始化,如果不对其初始化,java默认值对其初始化。
- 对于一个类来说,一般有三种常见的成员:属性 field、方法 method、构造器 constructor。这三种成员都可以定义零个或多个
创建一个学生类包含方法调用
package OrientedObject;
public class Student {
int id;
String sname;
int age;
void study(String a) {
System.out.println(""+a+"正在偷偷学习!!");
}
Student() {
}
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(s1.id);
System.out.println(s1.sname);
s1.id = 1001;
s1.sname = "孙少聪";
System.out.println(s1.id);
System.out.println(s1.sname);
Student s2 = new Student();
s2.id = 1002;
s2.sname = "熊举举";
s2.study(s2.sname);
System.out.println(s2.id);
System.out.println(s2.sname);
}
}
构造器:
快捷方法
- 直接上shift+alt+s,然后选择generate constructors from superclass或者generate constructors using fields,分别构造空参和带参数的构造函数。
使用要点
构造器详细使用说明
- 构造器通过 new 关键字调用!!
- 构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里使用 return 返回某个值
- 如果我们没有定义构造器,则编译器会自动定义一个无参的构造方法。如果已定义则编译器不会自动添加
- 构造器的方法名必须和类名一致!
使用构造器构造一个计算两个点之间距离的方法
public class Constructor {
int x,y;
public Constructor(int _x,int _y) {
x = _x;
y = _y;
}
public double Distance(Constructor a) {
return Math.sqrt((x-a.x)*(x-a.x)+(y-a.y)*(y-a.y));
}
public static void main(String[] args) {
Constructor point1 = new Constructor(3,4);
Constructor point2 = new Constructor(0,0);
System.out.println(point1.Distance(point2));
}
}
构造器的重载
用构造器重载的方式初始化属性的值(用this区分形参和属性)
public class ConstructorERec {
int id;
String sname;
int age;
public ConstructorERec(int id,String sname,int age) {
this.id = id;
this.sname = sname;
this.age = age;
}
public static void main(String[] args) {
ConstructorERec student = new ConstructorERec(1001, "孙少聪", 22);
System.out.println(student.sname);
}
}