《第1章 抽象类和接口.ppt》由会员分享,可在线阅读,更多相关《第1章 抽象类和接口.ppt(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、http:/抽象类和接口抽象类和接口第 一 章http:/中国十大品牌IT教育机构方法覆盖引用转型了解多态,在Java中实现多态final关键字回顾http:/中国十大品牌IT教育机构本章相关词汇(蓝色为关键字)单 词说 明abstract抽象,抽象的interface接口,界面implements实现http:/中国十大品牌IT教育机构本章目标抽象方法和抽象类,abstract关键字接口和实现接口,interface关键字和implements关键字类与类之间的关系(补充)http:/中国十大品牌IT教育机构抽象方法在某些情况下,基类无法(或者没有必要)提供被覆盖方法的具体实现,那么就可以将
2、此方法声明成抽象方法;使用关键字abstract声明抽象方法,一般语法:访问权限 abstract 返回值类型 方法名称(参数列表);如:public abstract void draw();http:/中国十大品牌IT教育机构抽象类如果某个类中包含有抽象方法,那么该类就必须定义成抽象类;定义抽象类同样使用关键字abstract,一般语法:访问权限 abstract class 类名 成员列表如:public abstract class Shapes public abstract void draw();http:/中国十大品牌IT教育机构抽象类的注意事项抽象类不可以直接实例化,只可以用
3、来继承;抽象类的派生子类应该提供对其所有抽象方法的具体实现;可以这么认为,抽象方法实际上就是由抽象基类强制要求其派生子类必须实现的方法原型;如果抽象类的派生子类没有实现其中的所有抽象方法,那么该派生子类仍然是抽象类,只能用于继承,而不能实例化;抽象类中也可以包含有非抽象的方法;构造方法和静态方法不可以修饰为abstract。http:/中国十大品牌IT教育机构修改前面的案例abstract class Shapes /基本形状类,抽象类基本形状类,抽象类 public abstract void draw();/绘图方法,抽象方法绘图方法,抽象方法class Circle extends Sh
4、apes /圆形类继承于基本形状类圆形类继承于基本形状类 public void draw()/实现抽象父类的抽象绘图方法实现抽象父类的抽象绘图方法 System.out.println(绘制了一个圆形。绘制了一个圆形。);class Square extends Shapes /正方形类继承与基本形状类正方形类继承与基本形状类 public void draw()/实现抽象父类的抽象绘图方法实现抽象父类的抽象绘图方法 System.out.println(绘制了一个正方形。绘制了一个正方形。);public class abstractDemo /该类用于容纳该类用于容纳main方法方法 p
5、ublic static void main(String args)Shapes obj;obj=new Circle();/父类的引用指向子类的实例父类的引用指向子类的实例 obj.draw();/调用绘图方法调用绘图方法 obj=new Square();/父类的引用指向子类的实例父类的引用指向子类的实例 obj.draw();/调用绘图方法调用绘图方法 http:/中国十大品牌IT教育机构接口如果某个类中的所有方法都是抽象方法,那么可以考虑将该类定义为接口;定义接口使用关键字interface,一般语法:访问权限 interface 接口名 成员列表如:public interface
6、 IMyInterface http:/中国十大品牌IT教育机构实现接口与抽象类相似,接口同样不可以实例化,只能用于实现;如果某类要实现接口,则使用implements关键字,一般语法:访问权限 class 类名 implements 接口名 成员列表如:public class MyClass implements IMyInterface http:/中国十大品牌IT教育机构接口示例源文件源文件IMyInterface.javapackage aaa;/定义接口定义接口public interface IMyInterface /*接口中的所有方法都默认为抽象方法接口中的所有方法都默认为抽
7、象方法 无需加无需加abstract关键字关键字*/public int add(int x,int y);public int sub(int x,int y);package bbb;import aaa.IMyInterface;/MyClass类实现于类实现于IMyInterface接口接口public class MyClass implements IMyInterface /实现接口中的抽象方法实现接口中的抽象方法 public int add(int x,int y)return(x+y);public int sub(int x,int y)return(x-y);源文件源文
8、件MyClass.javahttp:/中国十大品牌IT教育机构接口的注意事项接口中不能定义非抽象方法,也就是说接口中不能包含有函数实体;接口中的所有方法都默认为抽象方法,无需在每个方法前加abstract关键字;接口的实现类应该提供对接口中所有抽象方法的具体实现,否则将成为抽象类;与抽象类和它的继承类相似,也可以使用接口的引用指向其实现类的对象,从而达到动态多态的效果。http:/中国十大品牌IT教育机构接口示例(续)/*InterfaceDemo.java源文件源文件*/导入必要的接口和类导入必要的接口和类import aaa.IMyInterface;import bbb.MyClass;
9、/用于容纳用于容纳main方法方法public class InterfaceDemo public static void main(String args)/使用接口的引用指向实现类的实例使用接口的引用指向实现类的实例 IMyInterface obj=new MyClass();System.out.println(两数的和是:两数的和是:+obj.add(20,30);System.out.println(两数的差是:两数的差是:+obj.sub(30,20);http:/中国十大品牌IT教育机构关于接口的更多知识Java只支持单继承,而不能象C+那样可以多重继承,接口正是为了弥补这一
10、点;某个类只能继承于一个父类,但可以实现多个接口,如:public class 实现类名 implements 接口1,接口2,接口n 成员列表http:/中国十大品牌IT教育机构关于接口的更多知识(续)Java中还允许一个接口继承于另一个接口,即由父接口派生出子接口,如:public interface 子接口名 extends 父接口名 成员列表这样的话,甚至可以使用父接口的引用指向子接口的实现类的对象。http:/中国十大品牌IT教育机构final关键字在Java中,final关键字有最终的,不可修改的含义;final关键字有三种用途,可以分别应用于变量、成员方法和类。http:/中国十
11、大品牌IT教育机构final修饰变量如果将某个变量修饰为final,那么该变量就成为常量,一般语法:访问权限 final 数据类型 常量名=值;如:final double PI=3.14159;PI成为常量,其后任何试图对PI进行赋值的语句都将报错;常量在声明时必须初始化。http:/中国十大品牌IT教育机构final修饰方法如果将某个成员方法修饰为final,则意味着该方法不能被子类覆盖,一般语法:访问权限 final 返回值类型 方法名(参数列表)如:public final void fun()如果在派生类中出现同原型的方法,将会报错。http:/中国十大品牌IT教育机构final修饰
12、类如果将某个类修饰为final,则说明该类无法被继承,一般语法:访问权限 final class 类名 成员列表如:public final class MyClass 任何类想继承于MyClass类都将报错。http:/中国十大品牌IT教育机构类与类之间的关系类与类之间的关系一般来说有两种:“有”关系和“是”关系;所谓“是”关系就是指类的继承关系。如:从动物类派生出哺乳动物类,那么可以说哺乳动物是动物;而“有”关系是指在一个类中包含了另一个类的对象,即一个类中有另一个类(的对象),可以理解为类的嵌套。http:/中国十大品牌IT教育机构总结如果基类和派生类中有原型完全相同的方法,那么就形成了方法覆盖;引用转型是指父类的引用可以指向子类的实例,但反之不可以;在有方法覆盖的前提下,并且有引用转型的情况,就将形成动态多态;无法实现的方法可以定义成抽象方法,包含有抽象方法的类应该定义成抽象类;通过接口也能够实现多态,同时也可以弥补Java只支持单一继承的不足;final关键字有三种用途;类与类之间的关系:“是”关系和“有”关系。