Java程序设计第6章-继承.ppt

上传人(卖家):三亚风情 文档编号:3372375 上传时间:2022-08-24 格式:PPT 页数:32 大小:4.14MB
下载 相关 举报
Java程序设计第6章-继承.ppt_第1页
第1页 / 共32页
Java程序设计第6章-继承.ppt_第2页
第2页 / 共32页
Java程序设计第6章-继承.ppt_第3页
第3页 / 共32页
Java程序设计第6章-继承.ppt_第4页
第4页 / 共32页
Java程序设计第6章-继承.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、第第6 6章章 继承继承知识点知识点回顾回顾u面向对象的基本概念面向对象的基本概念l面向对象思想l对象和类的关系l类之间的关系u面向对象的特征面向对象的特征l封装l继承l多态u对象的创建、使用、销毁对象的创建、使用、销毁l构造方法2本讲目标本讲目标ustaticstatic与与finalfinal关键字关键字u继承继承l继承的概念、特征及优点l访问修饰符对类成员的访问限制uthisthis与与supersuper关键字关键字 3staticstatic与与finalfinal关键字关键字 ustaticstatic关键字关键字l static修饰的变量叫静态变量静态变量l static修饰的方

2、法叫静态方法静态方法l static修饰的代码块叫静态代码块静态代码块编写一个国家类,要编写一个国家类,要求该类中有一个变量求该类中有一个变量用来统计该类实例化用来统计该类实例化了几个中国人对象了几个中国人对象4staticstatic与与finalfinal关键字关键字 u静态变量静态变量 static static修饰的修饰的变量,又称为类变量u语法:语法:static 数据类型 变量名;u特征:特征:l静态变量属于某个类,被所有实例所共享l类变量仅在生成第一个对象时分配内存,所有实例对象共享同一个类变量,每个实例对象对类变量的改变都会影响到其它的实例对象。l可以通过类名方式或者实例名方式

3、访问l不能被this和super访问5class Chineseclass Chinese static int count=0;static int count=0;public class Testpublic class Test public static void main(String args)public static void main(String args)for(int i=0;i3;i+)for(int i=0;i3;i+)Chinese chinese=new Chinese();Chinese chinese=new Chinese();chinese.count

4、=chinese.count+1;chinese.count=chinese.count+1;System.out.println(Chinese.count);/System.out.println(Chinese.count);/通过类名访问静态变量通过类名访问静态变量 6使用静态变量使用静态变量staticstatic与与finalfinal关键字关键字 ustaticstatic方法方法 static修饰的方法,又成为类方法u语法:语法:访问修饰符 static 返回数据类型 方法名(参数列表)方法体;u特征:特征:l类方法不能访问实例变量,只能访问类变量或类方法。l类方法可以由类名直

5、接调用,也可由实例对象进行调用,但不规范。78使用静态方法使用静态方法class Chineseclass Chinese static int count=0;static int count=0;static void display()static void display()System.out.println(“count=”+count);System.out.println(“count=”+count);public class Testpublic class Test public static void main(String args)public static voi

6、d main(String args)for(int i=0;i3;i+)for(int i=0;i3;i+)Chinese chinese=new Chinese();Chinese chinese=new Chinese();chinese.count=chinese.count+1;chinese.count=chinese.count+1;Chinese.display();/Chinese.display();/通过类名访问静态方法通过类名访问静态方法 staticstatic与与finalfinal关键字关键字 u静态代码块静态代码块u特征:特征:l静态代码块不存在于任何方法体中l

7、类中的静态代码块被自动执行,尽管我们产生了类的多个实例对象,但其中的静态代码块只被执行了一次。l当JAVA虚拟机加载类时被载入,静态代码块被执行,静态块经常用来进行类属性的初始化。910使用静态代码块使用静态代码块class StaticBlockDemoclass StaticBlockDemo static int values=new int10;static int values=new int10;static static for(int i=0;ivalues.length;i+)for(int i=0;ivalues.length;i+)valuesi=(int)(100.0

8、valuesi=(int)(100.0*Math.random();Math.random();staticstatic与与finalfinal关键字关键字 u final final关键字关键字lfinal修饰类:是最终类,不能被其他类所继承 public final class String lfinal修饰变量:(成员变量或局部变量)即为常量,只能赋值一次,只能访问,不能修改其值。而且通常变量名用大写字母。如:public static final int INCREMENT=5lfinal修饰成员方法:是最终方法,不能被子类重写。public final void display();

9、11继承继承u生活中的继承生活中的继承动物动物食草动物食草动物食肉动物食肉动物谁是父类?谁是父类?谁是子类?谁是子类?能说出继承的特点吗?能说出继承的特点吗?继承需要符合的关系:继承需要符合的关系:is-ais-a,父类更通用、子类更具体,父类更通用、子类更具体12生活中的继承生活中的继承(续续)u子类具有父类的一般特性(包括属性和行为),以及自子类具有父类的一般特性(包括属性和行为),以及自身特殊的特性身特殊的特性汽车汽车巴士是汽车吗?巴士是汽车吗?卡车是汽车吗?卡车是汽车吗?出租车是汽车吗?出租车是汽车吗?最大载客数量最大载客数量报站报站引擎数量引擎数量外观颜色外观颜色刹车刹车加速加速最大

10、载重量最大载重量卸货卸货所属公司所属公司最大载客数量最大载客数量打发票打发票属性属性行为行为请问:出租请问:出租车包含哪些车包含哪些属性和行为属性和行为呢?呢?13汽车汽车小轿车小轿车卡车卡车客车客车继承继承继承继承继承继承轮船轮船交通工具交通工具继承继承继承继承基类和派生类基类和派生类u基类和派生类的概念是相对的,一个类既可以是基类,基类和派生类的概念是相对的,一个类既可以是基类,也可以是派生类也可以是派生类14为什么需要继承为什么需要继承u描述两种动物羊描述两种动物羊SheepSheep和狼和狼Wolf Wolf,各自的要求如下:,各自的要求如下:lSheepp属性:名称,重量p方法:吃饭

11、(吃草)、睡觉、呼吸、动物描述 lWolfp属性:名称,重量p方法:吃饭(吃肉)、睡觉、呼吸、动物描述15为什么需要继承为什么需要继承(续续)u以下这个解决方案中存在着什么问题?以下这个解决方案中存在着什么问题?public class Sheep private String name;/名称private int weight;/重量public Sheep(String sname,int sweight)name=sname;weight=sweight;public void eat()System.out.println(Im hungry);System.out.println(

12、I like to eat grass);public void sleep()System.out.println(Im sleeping);public void breathe()System.out.println(Im breathing);public void info()System.out.println(Hi,Im a“+name);System.out.println(My weigth is+weight);16为什么需要继承为什么需要继承(续续)public class Wolfprivate String name;/名称private int weight;/重量

13、public Wolf(String sname,int sweight)name=sname;weight=sweight;public void eat()System.out.println(Im hungry);System.out.println(I like to eat meat);public void sleep()System.out.println(Im sleeping);public void breathe()System.out.println(Im breathing);public void info()System.out.println(Hi,Im a“+

14、name);System.out.println(My weigth is+weight);17为什么需要继承为什么需要继承(续续)u存在的问题存在的问题两段代码存在重复两段代码存在重复18为什么需要继承为什么需要继承(续续)u如何改进?有没有可能建立继承关系,让如何改进?有没有可能建立继承关系,让子类自动继承子类自动继承父类的属性和方法父类的属性和方法?Sheep是动物是动物吗?吗?Wolf是动物吗?是动物吗?属属性性行行为为名称名称重量重量吃饭吃饭睡觉睡觉呼吸呼吸描述描述动物动物SheepWolf19JAVAJAVA中的中的继承继承u语法语法 class subclass-name ext

15、ends superclass-name /类体类体 u特征特征l 父类通用,它具有更一般的特征和行为,较为抽象。子类具体,它除了具有父类的特征和行为之外,还具有自己的特征和行为l 在继承关系中,父类和子类必须满足is-a的关系。l 父类叫基类、超类,子类叫派生类。l 如果子类没有写extends,则默认该子类的父类为Objectl Java中只支持单继承l 子类不能继承父类中访问权限为private的成员变量和方法。20u优点优点l通过继承,能够复用原有代码,节省编程时间,并能够减少程序代码出错的可能性。l在JAVA编程语言中,通过继承可利用已有的类,并扩展它的属性和方法。这个已有的类可以是

16、语言本身提供的或其他程序员编写的。lJAVA中所有的类(包括我们自己定义的类)都是直接或间接继承自java.lang.Object类。21JAVAJAVA中的中的继承继承定义父类定义父类AnimalAnimal及其子类及其子类SheepSheep、WolfWolf类类public class Animal private String name;/名称名称 private int weight;/重量重量 public Animal(String sname,int sweight)name=sname;weight=sweight;public void eat()System.out.pr

17、intln(Im hungry);public void sleep()System.out.println(Im sleeping);public void breathe()System.out.println(Im breathing);public void info()System.out.println(Hi,Im a+name);System.out.println(My weigth is+weight);现在,所有子类中现在,所有子类中相同的代码都抽取相同的代码都抽取到父类中了到父类中了 22public class Sheep extends Animal public S

18、heep(String sname,int sweight)super(sname,sweight);public void eat()System.out.println(I like to eat grass);public class Wolf extends Animal public Wolf(String sname,int sweight)super(sname,sweight);public void eat()System.out.println(I like to eat meat);子类自动继承父类的属性和方法,子类中不再存在重复代码子类自动继承父类的属性和方法,子类中不

19、再存在重复代码由于由于eat()方法与父类的实方法与父类的实现有所不同,因此现有所不同,因此重写重写了该了该方法方法 23Lab6_1:Lab6_1:编写一个应用程序,设计一个汽车类 Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car 是Vehicle 的子类,其中包含的属性有载人数 loader。卡车类 Truck 是Car类的子类,其中包含的属性有载重量 payload。每个类都有构造方法和输出相关数据的方法。编写测试类CarTest进行测试。24JAVAJAVA中的继承中的继承u访问修饰符对类成员的访问限制访问修饰符对类成员的访问限制25访问修饰符访问修饰

20、符访问权限访问权限private缺省的缺省的(default)protectedpublic当前类当前类同一包中的同一包中的类类(和和继承无关系继承无关系)不同不同包中的子类包中的子类任何类任何类thisthis与与supersuper关键字关键字 uthisthisl Java中为解决变量的命名冲突和不确定性问题,引入关键字“this”代表其所在方法的当前对象。l 每个成员方法内部,都有一个this引用变量,指向调用这个方法的对象,类中的成员方法与this之间的关系如图:26thisthis与与supersuper关键字关键字 uthisthis语法语法lthis(参数列表):调用其他的构造

21、函数lthis.属性名:调用本对象的属性lthis.方法:调用本对象的方法uthisthis特征特征l this不能在static上下文中使用l 可以在构造方法里调用其他重载的构造方法,采用this(参数列表)的形式,根据其中的参数列表,选择相应的构造方法。l 使用this调用构造方法时必须也只能放在构造方法的第一行。27public class Animal private String name;/名称名称 private int weight;/重量重量 public Animal(String name,int weight)this.name=name;this.weight=wei

22、ght;public void eat()System.out.println(Im hungry);public void sleep()System.out.println(Im sleeping);public void breathe()System.out.println(Im breathing);public void info()System.out.println(Hi,Im a+name);System.out.println(My weigth is+weight);28thisthis与与supersuper关键字关键字 u super superljava中通过sup

23、er来实现对父类成员的访问,super用来引用当前对象的父类。l每个子类构造方法的第一句,都隐含了调用super()。u语法语法:l super(参数列表):调用父类的构造函数l super.属性名:调用子类继承的父类属性l super.方法:调用子类继承的构造方法2930public class Sheep extends Animal public Sheep(String sname,int sweight)super(sname,sweight);public void eat()System.out.println(I like to eat grass);ustatic与finalu继承lJava中只支持单继承l在继承关系中,父类更通用,子类更具体。父类具有一般的特征和行为,而子类除了具有父类的特征和行为外,还具有一些自己的特殊的特征和行为l使用继承可以实现代码的复用uthis与super 总结总结31谢谢谢谢!32

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Java程序设计第6章-继承.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|