1. 在类的声明中,通过关键字extends来创建一个类的子类。一个类通过关键字implements声明自己使用一个或者多个接口。extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法; implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用
2.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了
接口实现的注意点:
a.实现一个接口就是要实现该接口的所有的方法(抽象类除外)。
b.接口中的方法都是抽象的。
c.多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。
一个类通过关键字implements声明自己使用一个或者多个接口。在类的声明中,通过关键字extends来创建一个类的子类。
class 子类名 extends 父类名implenments 接口名
A a = new B(); 结果a是一个A类的实例,只能访问A中的方法,那么又和
A a= new A();
有什么区别呢?
class B extends A 继承过后通常会定义一些父类没有的成员或者方法。
A a = new B();
这样是可以的,上传。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()不同。这正是多态性的体现。
分享到:
相关推荐
java中extends与implements的区别.docx
public class findmin extends Applet implements ActionListener JavaAppliet程序,在文本框里输入三个数,显示最小数
Javaextends与implements的区别.docx
TalkProgram extends Frame implementsTalkProgram extends Frame implements
ate final String[] COMMAND={"Backspace","CE","C"}; private final String[] M={" ","MC","MR","MS","M+"}; private JButton keys[]=new JButton[KEYS.length]; private JButton commands[]=new JButton[COMMAND....
Class属性Extends和Implements有什么区别,想必很多新手朋友们都不知道吧,下面通过实例为大家详细的介绍下,感兴趣的朋友可不要错过
java中extends与implements的区别浅谈,需要的朋友可以参考一下
C)class x extends y implements y1 {...} D)class x {...} 4.设 A为已定义的类名,下列声明A类的对象a的语句中正确的是( D)。 A) float A a; B) public A a=A( ); C) A a=new int( ); D) static A a=new A( )...
public class Calculator extends JFrame implements ActionListener{ JFrame jf; JTextField jtf; JButton jishu = new JButton("="); String sign[] = new String[]{"+","-","*","/","."}; String ops[] = ...
public class BlurAndSharpenDemo extends JFrame implements ActionListener { private JPanel jPanel = new JPanel(); //面板jPanel用于容纳模糊、锐化、还原图像按钮 private JButton buttonFile; //打开图像...
相对Hibernate和Apache OJB 等“一站式”ORM解决方案而言,ibatis 是一种“半 自动化”的ORM实现。 所谓“半自动”,可能理解上有点生涩。纵观目前主流的ORM,无论Hibernate 还是 Apache OJB,都对数据库结构提供了...
详细介绍如何用递归的思想完成著名的汉诺塔问题,当你看完之后,相信你一定会对汉诺塔有一个新的认识的
class ShanChu extends Frame implements ActionListener { //删除报警点的程序模块 } class MoNi extends Frame implements ActionListener { //模拟报警的程序模块 } public class A extends JFrame{ //地图的...
很好的Java面试题第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
用java编写流星雨的代码,用到JFrame、JPanel等
import java.io.*; public class FirstPart{ public static void main(String[] args) throws Exception{ System.out.print("The input Fahrenheit is "); BufferedReader br = new BufferedReader(new ...
extends Activity implements SurfaceHolder.Callback
android-calendar-view Easy to use, powerful, easy to expand the android calendar view library.... public class MainActivity extends AppCompatActivity implements CalendarViewPagerFragment.OnPageChangeLis
添加组件后,在组件上添加图片 1.设置Table的Model这个需要重写AbstractTableModel类, ...设置Table的DefaultEditor,这个需要extends AbstractCellEditor implements TableCellEditor,ActionListener