Java嵌套类

当嵌套类只在包含它的类中有意义时,或者它依赖于包含它的类来实现功能时,应该在另一个类中定义这个类。这句话是什么意思?为什么呢?... 当嵌套类只在包含它的类中有意义时,或者它依赖于包含它的类来实现功能时,应该在另一个类中定义这个类。

这句话是什么意思?为什么呢?
展开
 我来答
百度网友090def6
2014-04-22 · TA获得超过2211个赞
知道小有建树答主
回答量:558
采纳率:100%
帮助的人:712万
展开全部

这么说看你理解吧


1. 类Class,根据面向对象编程,它是描述对象的原型,拥有自己的属性和行为;

2. 我们在定义类时,会根据某特性抽象出一个类,这个类可以完成某些特有的功能

    如:设计一个打印类Printer,有个一个打印方法print(Object obj)

3. 因为我们定义的类是public的,此时Printer类是共用的,大家都可以直接使用

public class Printer {
public void print(int type, Object data){
// 打印的具体实现
}
}

到这里是没有问题的


但是在某些时候,我们需要实现一些特有的逻辑,这部分逻辑又不想暴露给其他人

如Printer在执行打印方法print需要对入参data处理


这个时候首先考虑的是给Printer类增加private私有方法(可能有多个),一般都能解决大部分问题

public class Printer {
public void print(int type, Object data) {
// 打印的具体实现
if (type == 1) {
printTxt(data); // 打印txt文件
}
if (type == 2) {
printExl(data); // 打印Exl文件
}
}
private void printTxt(Object data){
// 打印txt文件
}
private void printExl(Object data){
// 打印Exl文件
}
}


根据OOP的设计原理,Printer新加的私有方法【不属于】Printer,而更像另一个独立的类,

这个时候就使用嵌套类,把他隐藏在Printer,不让他人使用,如下:

public class Printer {
public void print(int type, Object data) {
// 打印的具体实现
if (type == 1) {
TxtPrinter txter = new TxtPrinter(); // 打印txt文件
txter.print(data);
}
if (type == 2) {
ExlPrinter exlter = new ExlPrinter(); // 打印Exl文件
exlter.print(data);
}
}

private class TxtPrinter{ // 嵌套类
public void print(Object data) {
}
}

private class ExlPrinter{ // 嵌套类
public void print(Object data) {
}
}
}


例子可能不够生动,应该能解释清楚:

有个类Class B,他的逻辑只对Class A负责,但是又不想把B暴露给他人,就把B定义成A的嵌套类


亲,如果回答满意,请即时采纳,你的配合是我回答的动力!

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式