Java中的关键字:extends 与 implements
来源:互联网 发布:linux cpu信息 编辑:程序博客网 时间:2024/05/16 07:36
class 子类名 extends 父类名 implenments 接口名
{...
}
===========================================================
A a = new B(); 结果a是一个A类的实例,只能访问A中的方法,那么又和A a = new A();有什么区别呢?
===========================================================
class B extends A
继承过后通常会定义一些父类没有的成员或者方法。
A a = new B();
这样是可以的,上传(upcast)。
a是一个父类对象的实例,因而不能访问子类定义的新成员或方法。
===========================================================
假如这样定义:
class A{
int i;
void f(){}
}
class B extends A{
int j;
void f(){} //重写
void g(){}
}
然后:
B b = new B();
b就是子类对象的实例,不仅能够访问自己的属性和方法,也能够访问父类的属性和方法。诸如b.i,b.j,b.f(),b.g()都是合法的。此时 b.f()是访问的B中的f()
A a = new B();
a虽然是用的B的构造函数,但经过upcast,成为父类对象的实例,不能访问子类的属性和方法。a.i,a.f()是合法的,而a.j,a.g()非 法。此时访问a.f()是访问B中的f()
==========================================================
A a = new B(); 这条语句,实际上有三个过程:
(1) A a;
将a声明为父类对象,只是一个引用,未分配空间
(2) B temp = new B();
通过B类的构造函数建立了一个B类对象的实例,也就是初始化
(3) a = (A)temp;
将子类对象temp转换未父类对象并赋给a,这就是上传(upcast),是安全的。
经过以上3个过程,a就彻底成为了一个A类的实例。
子类往往比父类有更多的属性和方法,上传只是舍弃,是安全的;而下传(downcast)有时会增加,通常是不安全的。
===========================================================
a.f()对应的应该是B类的方法f()
调用构造函数建立实例过后,对应方法的入口已经确定了。
如此以来,a虽被上传为A类,但其中重写的方法f()仍然是B的方法f()。也就是说,每个对象知道自己应该调用哪个方法。
A a1 = new B();
A a2 = new C();
a1,a2两个虽然都是A类对象,但各自的方法f()不同。这正是1楼说的多态性的体现。
- Java中的关键字:extends 与 implements
- java中的extends与implements的区别
- java中的extends 和implements
- JAVA中extends 与implements
- JAVA中extends 与implements
- JAVA中extends 与implements
- PHP中的 extends与implements 区别
- PHP中的 extends与implements 区别
- PHP中的 extends与implements 区别
- 区分Java中的 extends 和 implements
- java中的extends implements含义以及区别
- Java 中extends与implements使用方法
- JAVA中extends 与implements有
- JAVA中extends 与implements区别
- JAVA中extends 与implements的区别
- JAVA中extends 与implements区别
- Java 中extends与implements使用方法
- JAVA中extends 与implements区别
- php获取空间头像图片的方法
- 退役大将进人大任职四人名单经历揭晓
- TCP/IP四层模型
- 【WCF】基础
- Android网络框架之Http请求的分发与执行(三)
- Java中的关键字:extends 与 implements
- TCP/IP的基本工作原理
- linux设备节点
- SQL Server 复制、日志传输、镜像与故障转移集群
- 车削
- USACO section3.1 Score Inflation题解&代码
- hash(Codeforces Round #294 (Div. 2)D. A and B and Interesting Substrings)
- 写给海淘新手的 转运选择 攻略(2014最新版,10月13日更新)--转自什么值得买
- 产品经理需要懂哪些技术(1)