Android:JAVA语言extends和implements用法的学习
2018-01-10 15:23
627 查看
Android:JAVA语言extends和implements用法的实例学习
一、extends和implements介绍
1、extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承.
2、JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements.
3、继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了 ; 比如 class A extends B implements C,D,E 4、extends 继承类;implements 实现接口.
5、类和接口是不同的:类里是有程序实现的;而接口无程序实现,只可以预定义方法!
6、Java也提供继承机制﹐但还另外提供一个叫interface的概念。由于Java的继承机制只能提供单一继承(就是只能继承一种父类别)﹐所以就以Java的interface来代替C++的多重继承。interface就是一种介面﹐规定欲沟通的两物件﹐其通讯该有的规范有哪些。
二、以Java程式语言的角度来看﹐Java的interface是一些函数或资料成员为另一些属于不同类别的物件所需共同拥有,则将这些函数与资料成员定义在一个interface中,然后让所有不同类别的Java物件可以共同操作使用之;Java的class只能继承一个父类别(用extends关键字),
但可以拥有许多interface(用implements关键字)。
三、extends和implements有什么不同?
对于class而言,extends用于(单)继承一个类(class),而implements用于实现一个接口(interface)。
interface的引入是为了部分地提供多继承的功能。在interface中只需声明方法头,而将方法体留给实现的class来做。 这些实现的class的实例完全可以当作interface的实例来对待。 在interface之间也可以声明为extends(多继承)的关系。一个interface可以extends多个其他interface。
四、简单的说,extends可以理解为全盘继承了父类的功能; implements可以理解为为这个类附加一些额外的功能; 举个例子,Animal是一个父类,cat,dog,bird,insect都extends了Animal, 但是cat,dog,bird还可以implements比如run,shout,这些interface,bird,insect可以 implements比如fly这些interface;
五、继承过后通常会定义一些父类没有的成员或者方法。
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(){}
}
六、实例学习。
1、java代码extends_and_implements.java
一、extends和implements介绍
1、extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承.
2、JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements.
3、继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了 ; 比如 class A extends B implements C,D,E 4、extends 继承类;implements 实现接口.
5、类和接口是不同的:类里是有程序实现的;而接口无程序实现,只可以预定义方法!
6、Java也提供继承机制﹐但还另外提供一个叫interface的概念。由于Java的继承机制只能提供单一继承(就是只能继承一种父类别)﹐所以就以Java的interface来代替C++的多重继承。interface就是一种介面﹐规定欲沟通的两物件﹐其通讯该有的规范有哪些。
二、以Java程式语言的角度来看﹐Java的interface是一些函数或资料成员为另一些属于不同类别的物件所需共同拥有,则将这些函数与资料成员定义在一个interface中,然后让所有不同类别的Java物件可以共同操作使用之;Java的class只能继承一个父类别(用extends关键字),
但可以拥有许多interface(用implements关键字)。
三、extends和implements有什么不同?
对于class而言,extends用于(单)继承一个类(class),而implements用于实现一个接口(interface)。
interface的引入是为了部分地提供多继承的功能。在interface中只需声明方法头,而将方法体留给实现的class来做。 这些实现的class的实例完全可以当作interface的实例来对待。 在interface之间也可以声明为extends(多继承)的关系。一个interface可以extends多个其他interface。
四、简单的说,extends可以理解为全盘继承了父类的功能; implements可以理解为为这个类附加一些额外的功能; 举个例子,Animal是一个父类,cat,dog,bird,insect都extends了Animal, 但是cat,dog,bird还可以implements比如run,shout,这些interface,bird,insect可以 implements比如fly这些interface;
五、继承过后通常会定义一些父类没有的成员或者方法。
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(){}
}
六、实例学习。
1、java代码extends_and_implements.java
interface Runner { int ID=520111; void run (); } interface Flyer { void fly (); } interface Shouter { void shout(); } /* **extends可以理解为全盘继承了父类的功能,不需要重run方法。 */ interface Animal extends Runner { int ID=96; void breathe(); } class Fish implements Animal { int ID=98; static int fish_id=10; public void run () { System.out.println("fish is swimming"); } public void breathe() { System.out.println("fish is bubbing"); } } class Bird implements Runner , Flyer { public void run () { System.out.println("the bird is running"); } public void fly () { System.out.println("the bird is flying"); } } abstract class LandAnimal implements Animal { public void breathe() { System.out.println("LandAnimal is breathing"); } } /* ********************************************************************************************** ****如果将一个类设置为abstract,则此类必须被继承使用。此类不可生成对象,必须被继承使用。 ****Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性。下面的例子中 FlyAnimal就不需要重写Animal以及Flyer接口中的方法 ****Abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型。 ****Final和abstract永远不会同时出现。 *********************************************************************************************** */ abstract class FlyAnimal implements Animal , Flyer //class FlyAnimal implements Animal , Flyer//error,FlyAnimal不是抽象的, 并且未覆盖Runner中的抽象方法run() { public void breathe() { System.out.println("LandAnimal is breathing"); } } /* ********************************************************************************************** ***抽象类存在的意义是用来被继承的。一个类继承了一个抽象类,必须实现抽象类里面所有的抽象方法,否则,此类也是抽象类。 ***例如下面的swallow燕子类继承FlyAnimal,必须实现抽象类FlyAnimal里面的breathe()和run ()和fly ()方法以及Shouter类里面的shout()方法 *********************************************************************************************** */ class Swallow extends FlyAnimal implements Shouter //class Swallow implements FlyAnimal , Shouter//error错误: implements后面需要跟接口 { public void breathe() { System.out.println("Swallow is breathing"); } public void run () { System.out.println("Swallow is runing"); } public void fly () { System.out.println("Swallow is flying"); } public void shout() { System.out.println("Swallow is shouting"); } } public class extends_and_implements { public static void main (String args[]) { int j = 0; System.out.println("extends_and_implements class!"); Fish mFish = new Fish(); Swallow m_Swallow=new Swallow(); //Animal mAnimal=new Animal(); //FlyAnimal mFlyAnimal= new FlyAnimal();//错误: FlyAnimal是抽象的; 无法实例化 mFish.run(); System.out.println("mFish.ID="+mFish.ID); j = Runner.ID; System.out.println("Runner.ID="+j); System.out.println("Fish.fish_id="+Fish.fish_id); Fish.fish_id=20; System.out.println("Fish.fish_id="+Fish.fish_id); //Swallow.breathe();//error,错误: 无法从静态上下文中引用非静态 方法 breathe() m_Swallow.breathe(); } }2、编译&执行
相关文章推荐
- Android(java)学习笔记120:Android中的Application类用法
- Android学习记录(4)—在java中学习多线程下载的基本原理和基本用法①
- 黑马程序员Java培训、Android培训-Java 学习过程记录_语言基础3
- JAVA 学习之extens和implements的用法
- Android(java)学习笔记134:Handler用法总结和秒表案例
- 从Android/Java基础之上学习C/C++语言(2)--C语言基础--指针
- Android(java)学习笔记208:Android下的属性动画高级用法(Property Animation)
- Android学习记录(4)—在java中学习多线程下载的基本原理和基本用法①
- 从Android/Java基础之上学习C/C++语言(6)--C语言基础--联合体与枚举
- Java:extends和implements的区别与实际用法示例
- JAVA 学习之implements的用法
- 从Android/Java基础之上学习C/C++语言(7)--C语言基础--IO
- 从Android/Java基础之上学习C/C++语言(3)--C语言基础--内存分配
- 从Android/Java基础之上学习C/C++语言(8)--C语言基础--预编译
- Java 学习笔记 (3) -抽象类 abstract 接口 interface 内部类 inner class 继承 extends 实现 implements 包 package
- Android学习记录(4)—在java中学习多线程下载的基本原理和基本用法①
- 从Android/Java基础之上学习C/C++语言(4)--C语言基础--字符串
- java struts2入门学习--OGNL语言基本用法
- JAVA 学习之implements的用法
- 从Android/Java基础之上学习C/C++语言(5)--C语言基础--结构体