在java语言中,类代表了一个拥有共同特性的集合,这里面有属性和方法等元素。但每一个类的作用和范围是有限的,如果要实现更复杂的功能就需要和由其他特性组成的类产生联系,联系的方式决定了类与类的关系,可能是从属、是相互构造、是解释执行等等。这里举几个例子分别说明类和类之间的关系到底是怎么样的。
1、调用关系
public class A{
public String str;
}
public class B {
public static void main(String[] args) {
A a = new A();
a.str = “Hello”;
System.out.println(a.str + “World”);
}
}
解:调用是很常见的一种类与类之间的联系,在同一个包中,两个类里面的属性和方法只要不是私有的(private),都能通过“.”来调用,这样一来,代码不用重复编写,属性和方法就可以共享。
2、关联关系
public class A{
private B b;
}
public class B {
private A a;
}
解:关联关系指一个类被另一个类以属性的形式使用。
3、依赖关系
public class A{
public void method(B b){
}
}
public class B {
}
解:依赖关系指一个类被另一个类以参数的形式使用。
4、继承关系
public class Country {
private String name;
private double area;
public void statistical(double area) {
this.area = area;
System.out.println(name + “的面积是” + area + “平方公里”);
}
}
public class City extends Country {
private String name;
public City(String name) {
this.name = name;
}
public static void main(String[] args) {
City city = new City("重庆");
city.statistical(20);
}
}
(最后输出的结果是:重庆的面积是20平方公里)
解:继承是一个类从属一个类的表现,在上述例子中,City类继承了Country类的所有可公开的属性和方法。所以,在City类中虽然没有statistical这个方法,但也能运用这个方法,起到了简化代码的作用。
5、抽象关系
public abstract class A {
public abstract void methods1();
}
public class B extends A {
public void methods1() {
}
}
public class App {
public static void main(String[] args) {
A a = new A();//由于类A是一个抽象类,所以是不能被实例化的
B b = new B();
}
}
解:在我们现实中有一些东西存在但不能被实体化,只有一个名字或者符号,但它往往是一众拥有共同特性的集合,例如:“商品”,“公司”。对于这一类我们看不到摸不着但又不得不去使用的概念,我们称之为“抽象”。如上述例子所示,抽象类有的特点在于其不能自身实例化,必须由子类继承父类的非私有的属性或方法后才能进行调用,而且在抽象类中方法是没有方法体的,需要子类去具体实现这个方法。抽象类主要用来进行类型隐藏,也就是使用抽象的类型来编程,但是具体运行时就可以使用具体类型。