JAVA程序设计PPT教学课件-第3章 类的高级特性

上传人:QQ15****706 文档编号:110200808 上传时间:2019-10-29 格式:PPT 页数:40 大小:217KB
返回 下载 相关 举报
JAVA程序设计PPT教学课件-第3章 类的高级特性_第1页
第1页 / 共40页
JAVA程序设计PPT教学课件-第3章 类的高级特性_第2页
第2页 / 共40页
JAVA程序设计PPT教学课件-第3章 类的高级特性_第3页
第3页 / 共40页
JAVA程序设计PPT教学课件-第3章 类的高级特性_第4页
第4页 / 共40页
JAVA程序设计PPT教学课件-第3章 类的高级特性_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《JAVA程序设计PPT教学课件-第3章 类的高级特性》由会员分享,可在线阅读,更多相关《JAVA程序设计PPT教学课件-第3章 类的高级特性(40页珍藏版)》请在金锄头文库上搜索。

1、1,第3章 类的高级特性,2,本章导读,对象上转型 最终类 抽象类 接口 抽象类与接口的比较 内部类 匿名类 泛型类和泛型接口,3,本章导读,对象的上转型 最终类 抽象类 接口 抽象类与接口的比较 内部类 匿名类 泛型类和泛型接口,4,对象的上转型,假设B是A的子类或者间接子类,用类B创建一个对象,并把这个对象的引用赋值给类A的一个引用,例如: A a; B b=new B(); a=b; 称对象a是子类对象b的上转型对象,等价于 A a=new B();,5,上转型对象强制转换称子类对象,A a; B b=new B(); a=b; /a是b的上转型对象 b=(B)a; /上转型对象强制转换

2、成子类对象 等价于 A a=new B(); B b=(B)a;,6,上转型对象的特点,父类中被子类继承的变量,父类中被子类隐藏的变量,父类中被子类继承的方法,父类中被子类重写的方法,子类中定义的覆盖变量,子类中定义的重写方法,子类中定义的新变量,子类中定义的新方法,上转型对象,子类对象,7,上转型对象练习,TestUpdast.java(p76,程序3-1) TestUpdast2.java(p77,程序3-2) Lianxi1.java,8,对象上转型与运行时多态,如果一个类有很多子类,并且这些子类都重写了父类中的某个实例方法,把子类创建的对象的引用放到父类的对象中时,就得到了该对象的一个

3、上转型对象,这个上转型对象在调用这个实例方法时就可能具有多态性 TestBounding.java(P78,程序3-3),9,本章导读,对象上转型 最终类 抽象类 接口 抽象类与接口的比较 内部类 匿名类 泛型类和泛型接口,10,最终类(final类),final类不能被继承,即不能有子类 final class A A称为最终类 被final修饰的成员方法不能被重写,11,本章导读,对象上转型 最终类 抽象类 接口 抽象类与接口的比较 内部类 匿名类 泛型类和泛型接口,12,抽象类(abstract类),abstract class A abstract int min(int x,int

4、y); int max(int x,int y) return xy?x:y; ,抽象类,抽象方法,13,抽象类的特点,定义抽象类的目的是为其他的类创建一个公共的模板,让其他的类对其进行继承 (1)抽象类不能用运算符new创建对象 如果要创建对象,必须产生其子类,由子类创建对象 (2)抽象类中可以有抽象方法和普通方法 抽象方法用abstract修饰,只允许声明,不允许实现,14,抽象类的特点,(3)如果一个类中含有抽象方法,那么这个类一定是抽象类 (4)如果一个非抽象类是一个抽象类的子类,它必须具体实现父类的所有抽象方法 在子类中要将方法前面的abstract去掉 (5)如果一个抽象类是另一个

5、抽象类的子类,则子类可以实现父类的抽象方法,也可以不实现,abstract class Animal void weigh() System.out.println(“我有体重“); abstract void move(); class Bird extends Animal void move() System.out.println(“我能飞行“); class Beast extends Animal void move() System.out.println(“我能奔跑“); ,抽象类,抽象方法,非抽象子类中必须实现抽象父类中的抽象方法,TestAbstract.java P80,

6、程序3-4,public class TestAbstract public static void main(String args) Animal animal = new Animal(); /非法:抽象类不能实例化。 Bird 信天翁 = new Bird(); System.out.println(“信天翁:“); 信天翁.weigh(); 信天翁.move(); Beast 灰熊 = new Beast(); System.out.println(“灰熊:“); 灰熊.weigh(); 灰熊.move(); ,TestAbstract.java P80,程序3-4,17,本章导读,

7、对象上转型 最终类 抽象类 接口 抽象类与接口的比较 内部类 匿名类 泛型类和泛型接口,18,接口(interface)的概念,接口可以像类一样用来对某个概念进行抽象 可以用接口进行程序的框架设计,而不必关心实现的细节,排除细节对框架设计的干扰 通过接口,可以实现Java语言本身不具备的类的多继承机制,一个类可以实现多个接口,19,接口的声明,接口通过使用关键字interface来声明,接口体中包含常量定义和方法声明两部分 interface Printable final int MAX=100; void add(); float sum(float x,float y); 如果没有显示指

8、明,接口中的方法被默认为是public和abstract的,常量定义,方法声明,接口名,20,接口的使用,一个类通过使用关键字implements声明自己实现一个或多个接口,实现多个接口时,用逗号隔开接口名 class A implements Printable class A implements Printable, Addable class Dog extends Animal implements Eatable, Sleepable,21,接口的使用,如果一个类实现某个接口,那么这个类必须实现该接口的所有方法 如果没有显示指明,接口中的方法被默认为是public和abstract

9、的,类在实现接口时方法时一定要用public来修饰 接口中定义的常量可以被实现该接口的所有类共享,22,接口练习,Lianxi2.java TestInterface.java(p83,程序3-5),23,接口回调,接口回调是指:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口中的方法,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为接口回调 接口回调是多态的一种体现,不同的类在实现同一接口时 ,可能具有不同的功能体现,因此接口回调可能产生不同的行为,24,接口回调练习,Lianxi3.java Li

10、anxi4.java TestInterface2.java(p85,程序3-6),25,本章导读,对象上转型 最终类 抽象类 接口 抽象类与接口的比较 内部类 匿名类 泛型类和泛型接口,26,抽象类与接口类的比较,(1)抽象类中可以有抽象方法和普通方法,接口中的所有方法必须是抽象的 (2)抽象类中可以有常量也可以有变量,接口中不能有变量 (3)一个类可以实现多个接口,但是只能继承一个抽象类 (4)接口与实现它的类不构成类的继承体系,而抽象类属于一个类的继承体系,27,本章导读,对象上转型 最终类 抽象类 接口 抽象类与接口的比较 内部类 匿名类 泛型类和泛型接口,28,内部类,在一个类中声明

11、的类,称为内部类 包含内部类的类称为外部类 外部类把内部类看成是自己的成员 外部类的成员变量在内部类中仍然有效 内部类中的方法也可以调用外部类中的方法 内部类的类体中不可以声明类变量和类方法 外部类可以把内部类声明的对象作为外部类的成员,29,内部类练习,TestInner.java(p87,程序3-7) TestInner2.java(p88,程序3-8),30,本章导读,对象上转型 最终类 抽象类 接口 抽象类与接口的比较 内部类 匿名类 泛型类和泛型接口,31,与类有关的匿名类,子类对象的创建和子类类体定义同时进行的类称为匿名类 匿名类是一个子类,由于无名可用,所以不能用匿名类声明对象,

12、但是可以用匿名类创建对象 假设Hello是一个类,则下列代码就是用类Hello的一个子类(匿名类)创建对象 new Hello() ,匿名类,与类有关的匿名类,匿名类可以继承类的方法,也可以重写类的方法 匿名类是内部类,在某个类中直接使用匿名类创建对象 匿名对象的引用必须传递给一个匹配的参数 假设f(B x)是一个方法,其中的参数是B类对象,在调用方法f()时可以向参数x传递一个匿名对象 f(new B() );,匿名类作为参数,TestAnonymous.java(p90,程序3-9),33,与接口有关的匿名类,假设Computable是一个接口,Java允许直接用接口名和一个类体创建一个匿

13、名对象,此类体被认为是实现了Computable接口的类去掉类声明后的类体,即匿名类 new Computable() ,实现接口的匿名类,34,与接口有关的匿名类,假设f(Computable x)是一个方法,其中的参数是接口变量,在调用方法f()时可以向参数x传递一个匿名对象 f(new Computable() );,TestAnonymous2.java(p92,程序3-10),35,本章导读,对象上转型 最终类 抽象类 接口 抽象类与接口的比较 内部类 匿名类 泛型类和泛型接口,36,泛型类,可以使用class 名称 声明泛型类 class Cooperation Cooperati

14、on是泛型类的名称,X,Y是泛型 X,Y可以是任何类或接口,不能是基本类型数据,泛型类,泛型类的类体和普通类的类体相似,也是由成员变量和成员方法构成 class Cooperation void cooperation(X x,Y y) String contentX=x.toString(); String contentY=y.toString(); System.out.println(contentX+” 和”+contentY+”能写作”); ,38,泛型类,使用泛型类声明对象时,必须要指定泛型的实际类型 Cooperation work; Work=new Cooperation();,TestGenerics.java(p93,程序3-11),39,泛型接口,与声明、定义泛型类相似,也可以声明和定义泛型接口 interface Labor void cooperate(U,V); Labor是泛型接口的名称,U,V是泛型 U,V可以是任何类或接口,不能是基本类型数据,TestGenerics2.java(p94,程序3-12),40,Thanks!,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号