父类 xx = new 子类()与子类 xx = new 子类()的区别
来源:互联网 发布:淘宝虚拟发布类目 编辑:程序博客网 时间:2024/04/30 18:39
在java中我们经常遇到父类 xx = new 子类()的定义对象,那么与子类 xx = new 子类()相比有什么区别呢,下面我们从代码分析:
package com.sky.java;
public class FatherNewSon
{
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
a ta = new b();
b tb = new B();
ta.test();
ta.son();
tb.test();
tb.son();
}
}
class a{
public a()
{
}
public void test()
{
System.out.println(this.getClass().getName());
}
}
class b extends a{
public b()
{
}
public void son()
{
System.out.println("son");
}
}
其中ta是由父类定义的指向子类对象的引用,tb是由子类 xx = new 子类()定义的,然而ta.son()却报错:没有该方法,而tb.son()却不会报错。可见,父类 xx = new 子类()定义的对象无法调用非从父类继承的方法。此外,由运行结果:
可见ta.test()和tb.test()都是调用b中的方法。
以上总结出父类 xx = new 子类()与子类 xx = new 子类()的区别:
1.父类 xx = new 子类()定义的对象只能调用继承来的方法。
2.父类 xx = new 子类()定义的对象调用的是子类的方法,而不是父类的。
- 父类 xx = new 子类()与子类 xx = new 子类()的区别
- Java 父类 xx = new 子类()
- 子类继承父类,new 一个子类对象的过程(待完善)
- A b=new B()子类的向上转型
- 子类对父类中虚方法的处理有重写(override)和覆盖(new)的区别
- 声明父类,new子类--java和c#的区别
- virtual子类声明中override new的区别和联系
- 抽象类的子类可以new
- (转)B是A的子类,那么A a=new B();4不像的产生
- 关于父类引用指向子类对象(A a = New B();)的使用,理解向上转型
- Python中“xx+=xx”与“xx=xx+xx”的区别
- java new子类对象过程
- C#中子类对父类中虚方法的处理有重写(override)和覆盖(new),他们有什么区别?
- C#中子类对父类中虚方法的处理有重写(override)和覆盖(new),他们有什么区别?
- 子类
- 子类
- 子类A继承父类B, A a = new A(); 则父类B构造函数、父类B静态代码块、父类B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块 执行的先后顺序是?
- 子类A继承父类B, A a = new A(); 则父类B构造函数、父类B静态代码块、父类B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块 执行的先后顺序是?
- Contents & Index
- iOS开发-mutating method sent to immutable object错误
- 程序员面试精粹01
- Ubuntu 12.04下安装QT 4.0
- Java加载jar文件并调用jar文件当中有参数和返回值的方法
- 父类 xx = new 子类()与子类 xx = new 子类()的区别
- 蜗牛—cocos2dx学习之网址
- Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException.
- 华硕x53x不提示进入BIOS,安f2进入
- UIView的显示原理
- 深度优先搜索的用法——求数组部分和
- Linux下安装配置Nginx(Ubuntu)
- UIView+block动画和CALayer动画的区别
- Core Animation简介