永发信息网

Java嵌套类

答案:1  悬赏:20  手机版
解决时间 2021-01-24 18:56
  • 提问者网友:星軌
  • 2021-01-23 22:52
Java嵌套类
最佳答案
  • 五星知识达人网友:轻雾山林
  • 2021-01-23 23:12
这么说看你理解吧



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的嵌套类


亲,如果回答满意,请即时采纳,你的配合是我回答的动力!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯