`
diqizhan
  • 浏览: 146346 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

多态的2个缺陷

    博客分类:
  • java
阅读更多
最近在研读<<Thinking in Java>>......

多态的2个缺陷,其一:对私有方法的“覆盖”。只有非private方法才可以覆盖,因为private方法会被自动默认为是final方法。

public class Father {

	private void f() {
		System.out.println("Father's f()");
	}
	
	public void p() {
		System.out.println("Father's p()");
	}
	
	public static void main(String[] args) {
		Father f = new Sun();
		f.f();//Father's f()
		f.p();//Sun's p()
	}

}

class Sun extends Father {
	
	public void f() {
		System.out.println("Sun's f()");
	}
	
	public void p() {
		System.out.println("Sun's p()");
	}
	
}


其二:域与静态方法不具多态性。因为域是分配有存储空间的,父类与子类的域名虽然相同,但其存储空间不同。静态方法也同样道理。

public class FieldAccess {

	public static void main(String[] args) {
		Super sup = new Sub();
		System.out.println(sup.field);//0
		System.out.println(sup.getField());//1
		System.out.println(sup.dynamicGet());//Sub's dynamicGet
		System.out.println(sup.staticGet());//Super's staticGet
		
		Sub sub = new Sub();
		System.out.println(sub.field);//1
		System.out.println(sub.getField());//1
		System.out.println(sub.getSuperField());//0
		
	}

}

class Super {
	
	public int field = 0;
	
	public int getField() {
		return field;
	}
	
	public String dynamicGet() {
		return "Super's dynamicGet";
	}
	
	public static String staticGet() {
		return "Super's staticGet";
	}
}

class Sub extends Super {
	
	public int field = 1;
	
	public int getField() {
		return field;
	}
	
	public int getSuperField() {
		return super.field;
	}
	
	public String dynamicGet() {
		return "Sub's dynamicGet";
	}
	
	public static String staticGet() {
		return "Sub's staticGet";
	}
}



1
1
分享到:
评论

相关推荐

    论文研究-应用捕食搜索策略的改进多态蚁群算法.pdf

    结合捕食搜索策略对多态蚁群算法进行改良。...通过TSP的仿真实验结果表明,提出的融合算法可以有目的地指导信息素分布,加快算法向最优解的收敛速度及提高最优解质量,克服传统多态蚁群算法的缺陷。

    论文研究-基于自适应免疫多态蚁群算法的云数据库动态路径优化研究.pdf

    通过设置侦察蚁和搜索蚁两种状态蚁群,并引入自适应多态蚁群竞争策略,改善一般蚁群算法易陷入局部最优解的缺陷;在此基础上进一步融合具有快速全局搜索能力的人工免疫算法对搜索蚁路径优化过程进行改进,提高搜索...

    C++编程思想习题

    16.3向上映射的二义性 16.4虚基类 16.4.1“最晚辈派生”类和虚基初始化 16.4.2使用缺省构造函数向虚基“警告” 16.5开销 16.6向上映射 16.7避免MI 16.8修复接口 16.9小结 16.10练习 第17章 异常处理 17.1C语言的出错...

    求离散多态系统可靠性的矩阵分析法 (2004年)

    针对典型的二态系统可靠性数学模型存在的缺陷,在分析离散多态系统基本特点的基础上,提出了一种求解离散多态系统可靠性的新方法—矩阵分析法。

    深入浅出设计模式(中文版)

    2.6Polymorphism(多态) 18 2.7PureFabrication(纯虚构) 19 2.8Indirection(间接) 20 2.9ProtectedVariations(受保护变化) 21 第3章GoF-CreationalDesignPatterns创建型设计模式 23 3.1...

    深入浅出设计模式(中文版电子版)

    2.6Polymorphism(多态) 18 2.7PureFabrication(纯虚构) 19 2.8Indirection(间接) 20 2.9ProtectedVariations(受保护变化) 21 第3章GoF-CreationalDesignPatterns创建型设计模式 23 3.1...

    华为 C++ 培训资料

    1.3 C++多态的两种多态形式和区别…………………………………………… 18 第二章 重载 ………………………………………………………………………18 2.1 函数重载 ………………………………………………………………...

    华为C++中级培训教材

    1.3 C++多态的两种多态形式和区别…………………………………………… 18 第二章 重载 ………………………………………………………………………18 2.1 函数重载 …………………………………………………………...

    免费_华为C++培训教程.doc

    1.3 C++多态的两种多态形式和区别…………………………………………… 18 第二章 重载 ………………………………………………………………………18 2.1 函数重载 ………………………………………………………………...

    华为内部员工C++中级培训教材

    1.3 C++多态的两种多态形式和区别…………………………………………… 18 第二章 重载 ………………………………………………………………………18 2.1 函数重载 ………………………………………………………………...

    华为 C++ 培训资料 高级培训篇

    1.3 C++多态的两种多态形式和区别…………………………………………… 18 第二章 重载 ………………………………………………………………………18 2.1 函数重载 …………………………………………………………...

    华为_C++培训资料,华为培训课程,C,C++

    4 第一章 类、接口1.1 Handle-Body与接口、抽象接口1.2 多继承、与菱形缺陷、this跳转等1.3 C++多态的两种多态形式和区别第二章 重载2.1 函数重载2.2 运算符重载第三章 模板3.1 模块函数3.2 模块类3.3 STL标准模板库

    软件工程工具书.docx

    提高: C陷阱与缺陷 C与指针 如果C程序员只能选择两本书,第二本就是这个了。 第一本?第一本在上面呢。 深度探索C++对象模型 面试的时候经常问到的C++多态的实现方式就出自这本书。 推荐同时看Java虚拟机的书。 这...

    MATLAB模拟粒子散射代码-CS205-project:CS205项目

    SiC特别令人感兴趣,因为它是一种多态材料,表现出约250种已知的多型性,使它具有钻石无法获得的自由度。 三种最常见的多型体,即4H-和6H-SiC和3C-SiC,在20 K时的自旋弛豫时间为8至24 ms(4H-SiC最高),并且相干性...

    软件工程思想 林锐2000年2月于浙江大学

    3.2 零缺陷质量管理的观念 3.2.1 高目标 3.2.2 可执行的规范 3.3 软件的质量因素 3.3.1 正确性与精确性 3.3.2 性能与效率 3.3.3 易用性 3.3.4 可理解性与简洁性 3.3.5 可复用性与可扩充性 3.4 质量检查 3.5 小结 第...

    基于蚁群优化算法的云计算任务分配 (2012年)

    针对已有的适用于分配任务的蚁群算法易陷入局部最优解的缺陷,提出了一个保证云服务质量的分组多态蚁群算法。该算法将蚁群按职能不同分为搜索蚁、侦察蚁和工蚁,根据预测完成时间的更新使平均完成时间逐渐取得最小值...

    nethack:(废弃)nethack的一个叉子

    此外,当我发现多态和其他游戏机制并不像我曾经希望的那样公平和抽象时,我对 nethack 的设计决策感到失望,但实际上是针对每个特殊情况单独编程的。 (例如,夺心魔在攻击蟑螂时会变成石头这一事实是在 uhitm.c、...

    漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)

    演示效果:http://ucren.com/ucren-examples/widgets.html已知缺陷:1、widgets 不支持多态。2、图片预载功能对 Firefox 的支持不是很好。未来考虑解决的问题:1、优化图片预载2、与框架 vjbox 整合到一起未来考虑...

Global site tag (gtag.js) - Google Analytics