面向对象编程中,类对应表的结构(表的field)。
通过上图,可以看到,雇员类和雇员表的结构完全一样,只不过,雇员类增加了数据的类型而已。
1.表结构对应:类结构
2.一行数据对应:一个对象
3.表中所有数据对应:这个类的所有对象
类的定义
类:class 对象:Object,instance(实例)。
- 类可以看成一类对象的模板,对象可以看出该类的一个具体实例。
- 类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、方法。
类的定义方式
这是一个空类,没有任何实际意义。
对于一个类来说,一般有三种常见成员:属性 field、方法 method、构造器 constructor。
属性(成员变量):用于定义该类或该类对象包含的数据或者静态特征。作用范围:整个类体。在定义成员变量时,如果不对其进行初始化,Java使用默认的值对其初始化。
成员变量的默认值:
方法:用于定义该类或该类实例的行为特征和功能实现。//面向过程中,整个程序的基本单位是类。
方法定义格式:
编写一个简单的学生类:
package com.bjsxttest2;
public class Student {
//属性
int id;
String name;
int age;
//方法
void study(){
System.out.println("Studying");
}
//构造方法(方法名和类名保持一致)
Student() {
}
public static void main(String[] args) {
Student s1=new Student();
System.out.println(s1.id);
System.out.println(s1.name);
s1.id=1001;
s1.name="java";
s1.study();
System.out.println(s1.id);
System.out.println(s1.name);
}
}
输出结果为:
两次的id和name输出结果不同:第一次未初始化所以输出默认值,第二次初始化。
简单学生类的内存分析:
构造器:用于对象的初始化。Java通过new关键字来调用构造器,从而返回该类的实例。
4个要点:
1.构造器通过new关键字调用!!
2.构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里使用return返回某个值。
3.如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加。
4.构造器的方法名和类名一定要一致。
代码如下:
package com.bjsxttest2;
class Point{
double a,b;
public Point(double x,double y){
a=x;
b=y;
}
public double getDistance(Point p){
return Math.sqrt((a-p.a)*(a-p.a)+(b-p.b)*(b-p.b ));
}
}
public class Student2 {
public static void main(String[] args) {
Point p=new Point(3,4);
Point origin=new Point(0,0);
System.out.println(p.getDistance(origin));
}
}
该题的内存分析: