Java里面接口的多态机制问题
2013-04-20 01:39
183 查看
先看代码
interface Persons {
public final static String name = "PersonsName";
public void eat();
}
class Student implements Persons {
private String name = "Chen";
Student(String name) {
this.name = name;
}
public void eat() {
System.out.println("人吃东西");
}
}
class TestMember {
public static void main(String[] args) {
Persons p = new Student("Chen");
p.eat();
System.out.println(p.name);
}
}
打印结果是:人吃东西
PersonsName
在接口中对方法的调用相当如“强制转化无效”,但是对成员变量却不是这个样子的。
这里可以看成Student p = new Student("Chen");然后强制把Student转换成为Persons类型,但是遵循“强制转化无效”这一原则,我们可以说他依旧是一个学生,所以在调用方法的时候这能调用Student的方法。但是成员变量就不同了,这个时候和方法调用相反,这个时候他是Person类型了,当打印p.name的时候就不是学生名字Chen 而是接口里面的PersonsName。
interface Persons {
public final static String name = "PersonsName";
public void eat();
}
class Student implements Persons {
private String name = "Chen";
Student(String name) {
this.name = name;
}
public void eat() {
System.out.println("人吃东西");
}
}
class TestMember {
public static void main(String[] args) {
Persons p = new Student("Chen");
p.eat();
System.out.println(p.name);
}
}
打印结果是:人吃东西
PersonsName
在接口中对方法的调用相当如“强制转化无效”,但是对成员变量却不是这个样子的。
这里可以看成Student p = new Student("Chen");然后强制把Student转换成为Persons类型,但是遵循“强制转化无效”这一原则,我们可以说他依旧是一个学生,所以在调用方法的时候这能调用Student的方法。但是成员变量就不同了,这个时候和方法调用相反,这个时候他是Person类型了,当打印p.name的时候就不是学生名字Chen 而是接口里面的PersonsName。
相关文章推荐
- 【JAVA基础小问题】java中实现多态的机制是什么?
- 初识JAVA(【面向对象】:pub/fri/pro/pri、封装/继承/多态、接口/抽象类、静态方法和抽象方法;泛型、垃圾回收机制、反射和RTTI)
- JAVA基础知识点(六)--接口,多态,继承,抽象类,重载的问题
- [疯狂Java]泛型:类型参数多态问题、类型通配符(?)、类型通配符的上下限、类型参数的上限(类、接口)
- java的若干问题(1)——继承、多态、抽象类与接口
- java 从零开始,学习笔记之基础入门<抽象类_接口_多态>(十三)
- JAVA 多态和异常处理作业——动手动脑以及课后实验性问题
- 【幻化万千戏红尘】qianfengDay09-java基础学习:接口,抽象类,抽象方法,多态,instanceof
- java创建对象详解和多态问题
- java在使用实现了List接口时候应该注意的问题
- java之多态与抽象与接口!!!
- Java知识点笔记--多态机制中的静态方法
- Java基础---多态、抽象类、接口
- Java中多态的实现机制
- Java接口 继承 多态
- Java回调机制以及使用HibernateCallBack()接口的好处
- JAVA垃圾回收机制与内存泄露问题
- java 学习总结(二) 类的接口、继承与多态
- java学习之旅45--面向对象_18_多态_基本概念_强制转型问题_instanceof运算符
- java中的接口回调机制