Java程序设计第6章-继承

PPT
  • 阅读 75 次
  • 下载 0 次
  • 页数 32 页
  • 大小 4.137 MB
  • 2022-11-12 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
Java程序设计第6章-继承
可在后台配置第一页与第二页中间广告代码
Java程序设计第6章-继承
可在后台配置第二页与第三页中间广告代码
Java程序设计第6章-继承
可在后台配置第三页与第四页中间广告代码
Java程序设计第6章-继承
Java程序设计第6章-继承
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 32
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
文本内容

【文档说明】Java程序设计第6章-继承.ppt,共(32)页,4.137 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-2287.html

以下为本文档部分文字说明:

第6章继承知识点回顾◆面向对象的基本概念⚫面向对象思想⚫对象和类的关系⚫类之间的关系◆面向对象的特征⚫封装⚫继承⚫多态◆对象的创建、使用、销毁⚫构造方法2本讲目标◆static与final关键字◆继承⚫继承的概念、特征及优点⚫访问修饰符对类成员的访问限制◆this与super关键字3s

tatic与final关键字◆static关键字⚫static修饰的变量叫静态变量⚫static修饰的方法叫静态方法⚫static修饰的代码块叫静态代码块编写一个国家类,要求该类中有一个变量用来统计该类实例化了几个中国人对象4static与final关键字◆静态

变量static修饰的变量,又称为类变量◆语法:static数据类型变量名;◆特征:⚫静态变量属于某个类,被所有实例所共享⚫类变量仅在生成第一个对象时分配内存,所有实例对象共享同一个类变量,每个实例对象对类变量的改变都会影响到其它的实例对象。⚫可

以通过类名方式或者实例名方式访问⚫不能被this和super访问5classChinese{staticintcount=0;}publicclassTest{publicstaticvoidmain(

String[]args){for(inti=0;i<3;i++){Chinesechinese=newChinese();chinese.count=chinese.count+1;}System.out

.println(Chinese.count);//通过类名访问静态变量}}6使用静态变量static与final关键字◆static方法static修饰的方法,又成为类方法◆语法:[访问修饰符]static返回数据类型方法名([

参数列表]){方法体;}◆特征:⚫类方法不能访问实例变量,只能访问类变量或类方法。⚫类方法可以由类名直接调用,也可由实例对象进行调用,但不规范。78使用静态方法classChinese{staticintcount=0;

staticvoiddisplay(){System.out.println(“count=”+count);}}publicclassTest{publicstaticvoidmain(String[]args){for(inti=0;i<3

;i++){Chinesechinese=newChinese();chinese.count=chinese.count+1;}Chinese.display();//通过类名访问静态方法}static与final关键字◆静态代码块◆特征:⚫静态代码块不存在于任何方法体中⚫类中的静

态代码块被自动执行,尽管我们产生了类的多个实例对象,但其中的静态代码块只被执行了一次。⚫当JAVA虚拟机加载类时被载入,静态代码块被执行,静态块经常用来进行类属性的初始化。910使用静态代码块classStaticBlockDemo{

staticint[]values=newint[10];static{for(inti=0;i<values.length;i++){values[i]=(int)(100.0*Math.random());}}}static与final关键字◆fi

nal关键字⚫final修饰类:是最终类,不能被其他类所继承publicfinalclassString{}⚫final修饰变量:(成员变量或局部变量)即为常量,只能赋值一次,只能访问,不能修改其值。而且通常变量名用大写字母。如:publicstaticfinalintINCR

EMENT=5⚫final修饰成员方法:是最终方法,不能被子类重写。publicfinalvoiddisplay(){};11继承◆生活中的继承动物食草动物食肉动物谁是父类?谁是子类?能说出继承的特点吗?继承需要符合的关系:is-a,父类更通用、子类更具体12生活中

的继承(续)◆子类具有父类的一般特性(包括属性和行为),以及自身特殊的特性汽车巴士是汽车吗?卡车是汽车吗?出租车是汽车吗?最大载客数量报站引擎数量外观颜色刹车加速最大载重量卸货所属公司最大载客数量打发票属性行为请问:出租车包含哪些属性和行为

呢?13汽车小轿车卡车客车继承继承继承轮船交通工具继承继承基类和派生类◆基类和派生类的概念是相对的,一个类既可以是基类,也可以是派生类14为什么需要继承◆描述两种动物羊Sheep和狼Wolf,各自的要求如下:⚫Sheep属性:名称,重量方法:吃饭(吃草)、睡觉

、呼吸、动物描述⚫Wolf属性:名称,重量方法:吃饭(吃肉)、睡觉、呼吸、动物描述15为什么需要继承(续)◆以下这个解决方案中存在着什么问题?publicclassSheep{privateStringname;//名称privateintweight;//重量publicSheep

(Stringsname,intsweight){name=sname;weight=sweight;}publicvoideat(){System.out.println("I'mhungry");System.out.println("Iliket

oeatgrass");}publicvoidsleep(){System.out.println("I'msleeping");}publicvoidbreathe(){System.out.println("I'mbreathing");}pu

blicvoidinfo(){System.out.println("Hi,I'ma“+name);System.out.println("Myweigthis"+weight);}}16为什么需要继承(续)publicclassWolf{privateStringname

;//名称privateintweight;//重量publicWolf(Stringsname,intsweight){name=sname;weight=sweight;}publicvoideat(){System.out.println("I'mhungry");System.

out.println("Iliketoeatmeat");}publicvoidsleep(){System.out.println("I'msleeping");}publicvoidbreathe(){System.out.println("I'mbreathing");}pu

blicvoidinfo(){System.out.println("Hi,I'ma“+name);System.out.println("Myweigthis"+weight);}}17为什么需要继承(续)◆存在的问题两段代码存在重复18为什

么需要继承(续)◆如何改进?有没有可能建立继承关系,让子类自动继承父类的属性和方法?Sheep是动物吗?Wolf是动物吗?属性行为名称重量吃饭睡觉呼吸描述动物SheepWolf19JAVA中的继承◆语法classsubclass-name

extendssuperclass-name{//类体}◆特征⚫父类通用,它具有更一般的特征和行为,较为抽象。子类具体,它除了具有父类的特征和行为之外,还具有自己的特征和行为⚫在继承关系中,父类和子类必须满足is-a的关系。⚫父类叫基类、超类,子类叫派生类。⚫如果

子类没有写extends,则默认该子类的父类为Object⚫Java中只支持单继承⚫子类不能继承父类中访问权限为private的成员变量和方法。20◆优点⚫通过继承,能够复用原有代码,节省编程时间,并能够减少程序

代码出错的可能性。⚫在JAVA编程语言中,通过继承可利用已有的类,并扩展它的属性和方法。这个已有的类可以是语言本身提供的或其他程序员编写的。⚫JAVA中所有的类(包括我们自己定义的类)都是直接或间接继承自java.lang.Object类。21JAVA中的

继承定义父类Animal及其子类Sheep、Wolf类publicclassAnimal{privateStringname;//名称privateintweight;//重量publicAnimal(Stringsname,intswe

ight){name=sname;weight=sweight;}publicvoideat(){System.out.println("I'mhungry");}publicvoidsleep(){System.out.println("I'msleeping");}publ

icvoidbreathe(){System.out.println("I'mbreathing");}publicvoidinfo(){System.out.println("Hi,I'ma"+name);Syste

m.out.println("Myweigthis"+weight);}}现在,所有子类中相同的代码都抽取到父类中了22publicclassSheepextendsAnimal{publicSheep(Stringsname,intsweig

ht){super(sname,sweight);}publicvoideat(){System.out.println("Iliketoeatgrass");}}publicclassWolfextendsAnimal{publicW

olf(Stringsname,intsweight){super(sname,sweight);}publicvoideat(){System.out.println("Iliketoeatmeat");}

}子类自动继承父类的属性和方法,子类中不再存在重复代码由于eat()方法与父类的实现有所不同,因此重写了该方法23Lab6_1:编写一个应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属

性有载人数loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个类都有构造方法和输出相关数据的方法。编写测试类CarTest进行测试。24JAVA中的继承◆访问修饰符对类成员的访问限制25访问修饰符访问权限private缺省的(default

)protectedpublic当前类√√√√同一包中的类(和继承无关系)×√√√不同包中的子类××√√任何类×××√this与super关键字◆this⚫Java中为解决变量的命名冲突和不确定性问题,引入关键字“this”代表其所在方法的当前对象。⚫每个成员方法内部,

都有一个this引用变量,指向调用这个方法的对象,类中的成员方法与this之间的关系如图:26this与super关键字◆this语法⚫this(参数列表):调用其他的构造函数⚫this.属性名:调用本对象的属性⚫this.方法:调用本对象的方法◆this特征⚫this不能在

static上下文中使用⚫可以在构造方法里调用其他重载的构造方法,采用this(参数列表)的形式,根据其中的参数列表,选择相应的构造方法。⚫使用this调用构造方法时必须也只能放在构造方法的第一行。27

publicclassAnimal{privateStringname;//名称privateintweight;//重量publicAnimal(Stringname,intweight){this.name=name;this.weight=weight;}publicvoideat(){S

ystem.out.println("I'mhungry");}publicvoidsleep(){System.out.println("I'msleeping");}publicvoidbreathe(){System.out.println("I'

mbreathing");}publicvoidinfo(){System.out.println("Hi,I'ma"+name);System.out.println("Myweigthis"+weight);}}28this与super关键字◆super⚫java中通过super来实

现对父类成员的访问,super用来引用当前对象的父类。⚫每个子类构造方法的第一句,都隐含了调用super()。◆语法:⚫super(参数列表):调用父类的构造函数⚫super.属性名:调用子类继承的父类属性⚫super.方

法:调用子类继承的构造方法2930publicclassSheepextendsAnimal{publicSheep(Stringsname,intsweight){super(sname,sweight);

}publicvoideat(){System.out.println("Iliketoeatgrass");}}◆static与final◆继承⚫Java中只支持单继承⚫在继承关系中,父类更通用,子类更具体。父类具有一般的特征和行为,而子类除了具有父类的特征和行为外,还具有一些自己

的特殊的特征和行为⚫使用继承可以实现代码的复用◆this与super总结31谢谢!32

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?