永发信息网

Java嵌套类

答案:1  悬赏:20  手机版
解决时间 2021-01-24 18:56
Java嵌套类
最佳答案
这么说看你理解吧



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


亲,如果回答满意,请即时采纳,你的配合是我回答的动力!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大斑指公馆地址在什么地方,我要处理点事
易美地址好找么,我有些事要过去,
济青高速公路潍坊有几个路口
I think it will rain this evening.改为否定
能产生芽孢是细菌的一个重要特征下列关于芽孢
"几乎没有"用英语怎么说
铂晶汉宫地址有知道的么?有点事想过去
一根旗杆在离地面9米处断裂.旗杆顶部在离旗杆
茶叶蛋用一般的苦茶叶做可以吗
【狡兔死 走狗烹】《狡兔死,走狗烹》这句谚语
宫2演员表
苹果4手机设置里的icloud不小心关闭了怎么办
下列各项,构成工业企业外购存货入账价值的有
龙岗大运地铁站去万国食品城坐什么车
下列有关方便残疾人坡道的规定,哪条是不正确
推荐资讯
乳腺增生吃什么中药好?乳腺疼痛
好友家私地址在什么地方,我要处理点事
abaqus中计算一个面上节点位移的平均值
大学实习了,你们会选择回家还是去别的城市
请问,为什么人民币汇率变动会影响进出口?,清
十八分之十二等于几分之20
炫舞里怎么用最后情人换伴奏
Can you tell the world please leave,I want
三菱PLC FIFWP K34 D4030是什么意思啊
泰兴电厂待遇怎么样?
Excel是先打字再制表格好还是先制表格在打字
宏鑫宝怎么样
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?