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 是两个关键字,它们之间的区别是 Java 编程语言中最重要的基础知识。 extends 的作用 在 Java 中,extends 关键字用于继承父类,创建一个子类。在...
extends 和 implements 的主要区别在于继承和实现。extends 用于继承某个类,而 implements 用于实现多个接口。继承只能继承一个类,而实现可以实现多个接口。 在使用中,extends 和 implements 也有所不同。...
public class findmin extends Applet implements ActionListener JavaAppliet程序,在文本框里输入三个数,显示最小数
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....
在JavaScript中,当我们讨论Class属性Extends和Implements的区别时,我们通常是在讨论在某个特定的JavaScript框架或者库中的类的继承方式,比如在Prototype框架或Mootools框架中。 首先,我们来详细探讨一下Extends...
在Java编程语言中,`extends` 和 `implements` 关键字分别用于类的继承和接口的实现,它们是面向对象编程的重要特性。接下来我们将详细探讨这两个关键字的区别和使用场景。 1. **`extends` 关键字**: - `extends`...
public class Calculator extends JFrame implements ActionListener{ JFrame jf; JTextField jtf; JButton jishu = new JButton("="); String sign[] = new String[]{"+","-","*","/","."}; String ops[] = ...
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( )...
"JAVA中implement和extends的区别" JAVA中implement和extends是两个非常重要的关键字,它们都是用来实现继承和接口的,但是它们之间有着很大的区别。extends是继承父类,只要那个类不是声明为final或者那个类定义为...
贯彻 implements是用于检查Object符合给定接口的实用程序模块。 例子 var impl = require ( 'implements' ) ; var instance = [ ] ; impl ( instance , [ '... 像这样将Object和接口传递给implements 。 var EventE
public class Musicline extends JFrame implements Runnable { private byte[] audioData = null; private int intBytes = 0; private byte[] ml = new byte[1]; private int[] drawl = null; /** ...
在Java编程语言中,"implements"和"extends"是两个非常关键的关键词,它们用于类的继承和接口的实现,是面向对象编程的核心概念。理解并熟练运用这两个关键字对于掌握Java编程至关重要。 首先,让我们来看"extends...
一个类可以实现(`implements`)多个接口。 7. **继承与访问权限** - 子类可以访问父类的非私有成员,但不能访问父类的私有成员,体现了封装特性。 - 父类的静态成员在子类中是静态继承,而实例成员是动态继承,...
### Java中的extends与implements区别详解 #### 一、引言 在Java编程语言中,`extends`和`implements`这两个关键字被广泛应用于类与接口之间的继承关系定义中。正确理解和运用这两个关键字对于构建灵活且可扩展的...
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 ...
在Java面试中,还需要了解Collection和Collections的区别。Collections是一个java.util下的类,它包含有各种有关集合操作的静态方法。Collection是一个java.util下的接口,它是各种集合结构的父接口。 最后,在Java...
android-calendar-view Easy to use, powerful, easy to expand the android calendar view library.... public class MainActivity extends AppCompatActivity implements CalendarViewPagerFragment.OnPageChangeLis