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成员,可以直接访问外部类中所有成员
匿名内部类:定义在方法里面的局部内部类,本质上是一个继承了该类或者实现了该接口的子类匿名对象
类套类的关系下,除静态嵌套类以外,类与类的耦合性更强,嵌套类的独立性更弱,但是提高了一些类的隐蔽性,增加了一些访问特权。
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/244435.html