1.调用

下面是不同的类调用不同的类是否合法的总结表格。

被调用类的类型

同一类

同一包

不同类的子类

不同步的非子类

Private类


 

 

 

Default类



 

 

Protected类




 

Public类





调用关系下,两个类都是独立的类,两个类之间没有依附关系,只是,操作类与被调用类不在一个包时需要使用import语句。在操作类中创建被调用类的对象,就能调用其中的方法还有变量(private类的成员变量和方法需要使用get和set方法)。

2.继承

继承关系下,子类对父类有依附关系,如果父类发生变化,子类实现也不得不跟着变化。继承关系下,Java支持多层继承,但不支持多继承,如:

public class Son extends Father,mother;

这是多继承,即一个子类同时继承多个父类,是不正确的。

 

public class Son extends Father;
public class Father extends Granddad;

这是多层继承,即子类继承的父类,可以是其他类的子类。

 

继承提高代码的复用性和维护性但使类的耦合性增强,削弱了子类的独立性。

3.类套类

嵌套类:在类中定义的类,嵌套类包括静态嵌套类和内部类

静态嵌套类:用static修饰的类,在本质上是个顶级类,对比一般的顶级类,静态嵌套类可以直接访问外部类除实例成员以外的其他成员(实例成员必须先创建外部对象才能调用)

内部类:没有用static修饰的类,可以直接访问外部类的成员,外部类要访问内部类的成员,必须创建对象,包括成员内部类和局部内部类

成员内部类:定义在类的成员位置

局部内部类:定义在类的局部位置(代码块中),不能定义除编译时常量以外的任何static成员,可以直接访问外部类中所有成员

匿名内部类:定义在方法里面的局部内部类,本质上是一个继承了该类或者实现了该接口的子类匿名对象

类套类的关系下,除静态嵌套类以外,类与类的耦合性更强,嵌套类的独立性更弱,但是提高了一些类的隐蔽性,增加了一些访问特权。