java 多态的特殊特性
来源:互联网 发布:淘宝上怎么打印快递单 编辑:程序博客网 时间:2024/05/22 03:14
最近一个阶段在学习java的多态特性,按照我个人的理解,首先多态的目的是为了更好的实现类型的兼容,其次如果子类覆盖了的方法时,如果把子类的对象赋给父类的应用,且调用父类接口的方法时,会调用子类中的方法,因为一个父类可能会有多个子类,那么在运行的过程中java是怎么知道具体是要调用那个子类中的方法的了?这个特性是由java中所谓的动态绑定的机制来保证的。就其多态本身而言不是很复杂,但是有三个比较容易绕的问题需要搞清楚,
(1)Pitfall: “overriding” private methods 即对于父类中的private 方法,子类不能进行覆盖,且用父类的引用调用private方法时只能调用父类中的方法
public class PiteFallPrivate {
private void print() {
System.out.println("PeteFallPrivate.....");
}
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
PiteFallPrivate pfp = new T();
System.out.println(pfp.getClass().getName());
pfp.print();
}
}
class T extends PiteFallPrivate {
// @Override
public void print() {
System.out.println("T method output.....");
}
}
(2)Pitfall: fields and static methods 字段没有多态的特性,字段的值和应用有关系,而不会和具体的对象有关系
public class PiteFallField {
public static void main(String[] args) {
Super sup = new Sub();
System.out.println(sup.i);
System.out.println(sup.getI());
System.out.println(new Sub().getSuper());
System.out.println(new Sub().i);
System.out.println(new Sub().getI());
}
}
class Super {
int i = 0;
public int getI() {
return i;
}
public Super() {
System.out.println("Super init....");
i = 6;
}
}
class Sub extends Super {
int i = 1;
public Sub() {
System.out.println("Sub init....");
}
public int getI() {
return i;
}
public int getSuper() {
return super.i;
}
}
(3)static methods are associated with the class, and not the individual objects. static 方法的特性和字段相同
public class PitFallStaticMethod {
public static void print(){
System.out.println("base static method output....");
}
public void print2(){
System.out.println("base not static method output...");
}
public static void main(String[] args) {
PitFallStaticMethod pfs=new StaticMethodSub();
pfs.print();
pfs.print2();
}
}
class StaticMethodSub extends PitFallStaticMethod{
public static void print(){
System.out.println("sub static method output....");
}
public void print2(){
System.out.println("sub not static method output...");
}
}
- java 多态的特殊特性
- JAVA的多态特性
- java多态的特性
- java的多态特性
- vue.js的特殊特性
- 特殊容器的共性与特性
- Java多态特性
- java多态特性
- Java特性多态
- java 多态特性
- 多态的特殊处理
- JAVA学习脚印5: 继承特性及特殊类
- JAVA多态成员特性
- 多态的特性
- 大脑烧糊的java多态特性!
- Java的特性—封装、继承和多态
- Java多态特性:重载和覆写的比较
- JAVA的三大特性:封装、继承与多态
- Android的进程,线程模型
- 对话框全屏
- hibernate annotation 注解
- Android Application Task Activities的关系
- eWebEditor不支持IE8IE7火狐遨游的解决方法
- java 多态的特殊特性
- Apache Solr初体验一
- MapReduce技术的初步了解与学习
- jpg压缩步骤
- perl书籍推荐
- Apache Solr初体验二
- Linux下qemu的使用
- Apache Solr初体验三
- asp treeview绑定数据库