类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间中。
对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随着它自己的行为而发生改变。
类是抽象的,而对象是一个实体 .类:具有相同属性和行为的一组对象的集合. 对象:是具体存在的事物,明确定义状态和行为.
1.关联关联即对象与对象之间的连接。java类之间的关联是一个类的作为另一个的属性被定义,即“has-a”的关系。关联又分为组合与聚合两种。示例如下:
//两个类之间的聚合public class Car{}public class Person{
private Car car
}//两个类之间的组合public class Car{}public class Person{
private Car car=new Car()//创建一个Car对象}123456789101112
关联又分为单向关联与双向关联,以上代码为单向关联(Person类关联Car类),双向关联(Person类关联Car类,同时Car类关联Person类)代码如下:
public class Car{
private Person per
}public class Person{
private Car car
}123456
类之间的关联,可以一对一的关联,也可以一对多的关联。
2.依赖
依赖的具体表现是将一个类的对象当做方法参数传给另一个类的方法,是一种use-a的关系。如:
public class Person{
public void dirve(Car car){
}
}1234
关联与依赖的区别在于:关联是has-a的关系,依赖是use-a的关系而且关联中Person关联Car,只要Person类对象存在,Car对象就存在依赖中只有Person类对象调用到dirve()方法时,Car对象才会被创建,方法执行结束后,Car对象就被收回。
3.继承
类与类的另一个关系是继承。继承是一个类的定义基于另一个存在的类,即子类基于父类,如此可实现代码的重用,子类能够继承父类可访问的方法、属性,并能扩展新的能力,而且子类可重写父类方法以满足子类需要。在继承中子类可调用父类的构造方法,子类构造方法总是先调用父类的构造方法,而且默认情况下调用父类的无参构造方法,在子类构造方法的第一行使用super关键字即可调用父类构造方法。示例代码如下:
public class Point {
private double x private double y public double getX() {return x
}public void setX(double x) {this.x = x
}public double getY() {return y
}public void setY(double y) {this.y = y
} //无参构造方法
public Point() {
} //有参构造方法
public Point(double x, double y) {this.x = x this.y = y
} //draw()方法
public void draw(){
}
}public class Circle extends Point {
private double r public double getR() {return r
}public void setR(double r) {this.r = r
} //有参构造方法
public Circle(double x, double y) {super(x, y)
}public void draw() {
System.out.println("半径为:" + this.r + " x坐标为:" + getX() + " y坐标为:" + getY() + "的圆绘制成功!")
}
}public class Test {
public static void main(String[] args) {
Circle circle = new Circle(2, 3)
circle.setR(3)
circle.draw()
}
}