java 中当父类对象变量引用子类对象后,用变量调用静态常量,调用的是子类还是父类?多态
解决方案 »
- 今天写OjbectInpuStream时遇到readObject
- 如何把jsp文件里的服务器端脚本 以下的代码换成el表达式
- 深入了解一个小知识点。
- 关于CallableStatement执行效率问题
- 为什么在eclipse中修改了项目而在运行后页面中没改
- 一个java基本概念的问题...
- 奇怪的异常---“不支持的字符集 !!: DBConversion”
- JDK的重大BUG! Graphics.fillOval()
- xml怎么看不到根目录?
- IDEA Spring boot修改代码无法生效
- 求高手点拨一个Socket通信的EOFException的处理方案的可行性.
- 怎么样更方便的检验数据的正确性呢?
一般来说,是调用的范围小的那一个
你问的是这个意思么?public class Test {
public static void main(String[] args) {
Father father=new Son();
System.out.println(father.i);//输出1
System.out.println(father.ii);//输出11
}
}
class Father{
public static int i=1;
public int ii=11;
}
class Son extends Father{
public static int i=2;
public int ii=12;
}
Father father =new Father();
成员变量访问子类成员变量?
这样?class Father{
public int i=1001;
public Father() {
// TODO Auto-generated constructor stub
}
public void show(){
}
}
class Son extends Father{
public int i=10001;
public int ii=super.i;
public Son() {
// TODO Auto-generated constructor stub
}
public void show(){
System.out.println(i);
System.out.println(super.i);
}
}
成员变量访问子类成员变量?
这样?class Father{
public int i=1001;
public Father() {
// TODO Auto-generated constructor stub
}
public void show(){
}
}
class Son extends Father{
public int i=10001;
public int ii=super.i;
public Son() {
// TODO Auto-generated constructor stub
}
public void show(){
System.out.println(i);
System.out.println(super.i);
}
}
用父类声明的对象变量,可能表示的不是很清楚。
成员变量访问子类成员变量?
这样?class Father{
public int i=1001;
public Father() {
// TODO Auto-generated constructor stub
}
public void show(){
}
}
class Son extends Father{
public int i=10001;
public int ii=super.i;
public Son() {
// TODO Auto-generated constructor stub
}
public void show(){
System.out.println(i);
System.out.println(super.i);
}
}
用父类声明的对象变量,可能表示的不是很清楚。
你到底什么意思,杀了我吧。。
你举出一个代码的例子吧。。
成员变量访问子类成员变量?
这样?class Father{
public int i=1001;
public Father() {
// TODO Auto-generated constructor stub
}
public void show(){
}
}
class Son extends Father{
public int i=10001;
public int ii=super.i;
public Son() {
// TODO Auto-generated constructor stub
}
public void show(){
System.out.println(i);
System.out.println(super.i);
}
}
class J_Base{
public int m_date=1;
public String mb_method()
{
return"2";
}
}
class J_Test extends J_Base
{
public int m_date=3
public String mb_method()
{
return"4";
}
public static void main(String[] args)
{
J_Base app=new J_Test();
System.out.println(app.m_date+app.mb_method());
}
}
就是一道题,输出14,当时问的是静态变量。
成员变量访问子类成员变量?
这样?class Father{
public int i=1001;
public Father() {
// TODO Auto-generated constructor stub
}
public void show(){
}
}
class Son extends Father{
public int i=10001;
public int ii=super.i;
public Son() {
// TODO Auto-generated constructor stub
}
public void show(){
System.out.println(i);
System.out.println(super.i);
}
}
class J_Base{
public int m_date=1;
public String mb_method()
{
return"2";
}
}
class J_Test extends J_Base
{
public int m_date=3
public String mb_method()
{
return"4";
}
public static void main(String[] args)
{
J_Base app=new J_Test();
System.out.println(app.m_date+app.mb_method());
}
}
就是一道题,输出14,当时问的是静态变量。
亲,一定区分清楚
成员变量和成员方法。
另外你给我的例子中没有静态的内容啊
静态的是static修饰的你这题,
app.m_date输出的是父类的m_data成员变量
而方法执行的是子类的mb_method()方法,原因是子类把父类的方法给重写了。
成员变量访问子类成员变量?
这样?class Father{
public int i=1001;
public Father() {
// TODO Auto-generated constructor stub
}
public void show(){
}
}
class Son extends Father{
public int i=10001;
public int ii=super.i;
public Son() {
// TODO Auto-generated constructor stub
}
public void show(){
System.out.println(i);
System.out.println(super.i);
}
}
class J_Base{
public int m_date=1;
public String mb_method()
{
return"2";
}
}
class J_Test extends J_Base
{
public int m_date=3
public String mb_method()
{
return"4";
}
public static void main(String[] args)
{
J_Base app=new J_Test();
System.out.println(app.m_date+app.mb_method());
}
}
就是一道题,输出14,当时问的是静态变量。
亲,一定区分清楚
成员变量和成员方法。
另外你给我的例子中没有静态的内容啊
静态的是static修饰的你这题,
app.m_date输出的是父类的m_data成员变量
而方法执行的是子类的mb_method()方法,原因是子类把父类的方法给重写了。
输出4明白就是不太明白为什么输出1,app.m_date,被public修饰的成员变量是不是可以像静态变量一样调用?谢谢啊。
成员变量访问子类成员变量?
这样?class Father{
public int i=1001;
public Father() {
// TODO Auto-generated constructor stub
}
public void show(){
}
}
class Son extends Father{
public int i=10001;
public int ii=super.i;
public Son() {
// TODO Auto-generated constructor stub
}
public void show(){
System.out.println(i);
System.out.println(super.i);
}
}
class J_Base{
public int m_date=1;
public String mb_method()
{
return"2";
}
}
class J_Test extends J_Base
{
public int m_date=3
public String mb_method()
{
return"4";
}
public static void main(String[] args)
{
J_Base app=new J_Test();
System.out.println(app.m_date+app.mb_method());
}
}
就是一道题,输出14,当时问的是静态变量。
亲,一定区分清楚
成员变量和成员方法。
另外你给我的例子中没有静态的内容啊
静态的是static修饰的你这题,
app.m_date输出的是父类的m_data成员变量
而方法执行的是子类的mb_method()方法,原因是子类把父类的方法给重写了。
输出4明白就是不太明白为什么输出1,app.m_date,被public修饰的成员变量是不是可以像静态变量一样调用?谢谢啊。
首先你要区分好静态变量和非静态变量的区别
静态变量可以在静态方法中直接调用
而public声明的是可以在其他类中调用这两者不一样。。你声明的是一个father的对象。
子类继承了父类所有的东西(private的除外)
有重名的成员变量怎么办?ok,声明的是谁那就调用谁的
有重名的方法(输入参数一直)怎么办?ok,那就优先调用子类的方法。
静态变量直接用类名.变量名就可以访问,从属于类,但前提是你的变量要是被public修饰或者其他能访问得到的修饰符修饰的。
这两者完全不好比较。。不知道怎么回答你。
如果是说被public修饰的成员变量 与 静态public变量在类外调用的形式是不是相同这个倒是可以回答下
成员变量用对象.变量名 静态变量用类名.变量名
即可访问