Java嵌套类
当嵌套类只在包含它的类中有意义时,或者它依赖于包含它的类来实现功能时,应该在另一个类中定义这个类。这句话是什么意思?为什么呢?...
当嵌套类只在包含它的类中有意义时,或者它依赖于包含它的类来实现功能时,应该在另一个类中定义这个类。
这句话是什么意思?为什么呢? 展开
这句话是什么意思?为什么呢? 展开
1个回答
展开全部
这么说看你理解吧
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的嵌套类
亲,如果回答满意,请即时采纳,你的配合是我回答的动力!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询