




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 深入学习Java面向对象程序设计,4.1 类与类的关系 4.2 类的继承 4.3 抽象类 4.4 接口,4.1 类与类的关系,使用关系 例如:myDate与usingDate 包含关系 一个类的对象作为另外一个类的成员变量 继承关系,class Wheel public void inflate(int i) ,class Window public void rollup() public void rolldown() ,class Door public Window window = new Window(); public void open() public void cl
2、ose() ,包含: Car类包含 Engine、Wheel等类,public class Car public Engine engine = new Engine(); public Wheel wheel = new Wheel4; public Door left = new Door(); public Door right = new Door(); public Car() for (int i =0; i 4; i+) wheeli = new Wheel(); public static void main(String args) Car car = new Car();
3、car.left.window.rollup(); car.wheel0.inflate(72); ,class Engine public void start() public void rev() public void stop() ,继承关系,一个类可以继承其他类的所有成员,还可 以拥有自己的成员。被继承的类称为父类, 由继承生成的类称为子类。 继承的优点: 提高程序的可重复性,可扩充性; 提高程序的可维护性。,4.2 类的继承,问题1:如何编写子类?即如何通过继承的 方式编写类? 问题2:关于继承的一些规定。 问题3:构造函数的继承与super关键字。 问题4:子类对象的实例化过程
4、。 问题5:关于方法的覆盖。,public class Point final static Point origin=new Point(0,0); public int x; public int y; public Point() public Point(int x,int y) this.x=x; this.y=y; public double distance() return Math.sqrt(x*x+y*y); public static void draw() System.out.println(Point: a point.); public static Point
5、getOrigin() return origin; ,class ColorPoint extends Point int color; ColorPoint() super(); ColorPoint(int x,int y,int c) super (x,y); this.color=c; public static void draw() System.out.println(ColorPoint: a color point.); ,class MapPoint extends ColorPoint String name; MapPoint() super(); MapPoint(
6、int x,int y,int c,String name) super (x,y,c); =new String(name); public static void draw() System.out.println(MapPoint: a map color point.); ,通过继承创建类,类继承是用关键字extends来实现的 public class ColorPoint extends Point 问题: ColorPoint类中有哪些变量和方法?,子类,父类,关于继承的一些规定,Java只支持单继承。(单继承?) 可以有多层继承。 子类继承父类的所有非priv
7、ate的成员变量和成员函数,但不继承构造函数。 子类可以重写父类的某些成员函数,称为方法的覆盖。,方法的覆盖,方法的覆盖是在子类中重新编写了和父类中函数名、参数表相同的成员函数,这时,子类中的函数将会覆盖父类中的同名函数。 问题:前面的ColorPoint和Point之间有无方 法覆盖?,继承关系中的构造函数,子类不能继承父类的构造函数。 在子类的构造函数中可用super(参数列表)显示地调用父类的构造函数。必须是构造函数的第一句。 ColorPoint() super(); ColorPoint(int x,int y,int c) super (x,y); this.color=c; ,t
8、his关键字,在子类的构造函数中可用super(参数列表)显示地调用父类的构造函数。也可以用this (参数列表)调用本类的其他构造函数。 public class TestThis int a; int b; int c; public TestThis() public TestThis(int A,int B) a=A;b=B; public TestThis(int A,int B,int C) this(A,B); c=C; ,子类对象的实例化过程,例如:MapPoint mp=new MapPoint(); 分配成员变量的存储空间并进行默认初始化 绑定构造函数。 调用父类的构造函数
9、: 如有super() 则调用, 如果没有显式调用父类的构造函数,则自动 调用父类无参构造函数。 继续执行本类的构造函数:,子类对象的实例化过程,class A public A() System.out.println(自动调用); public A(int tt) System.out.println(super调用); class B extends A public B() /super(10); System.out.println(B类构造函数); public static void main(String args) A ab=new B(); ,实例,import java.
10、awt.*; import java.awt.event.*; import javax.swing.*; class myFrame extends JFrame private JTextField tf; private JButton b0; myFrame() setSize(220,180); tf=new JTextField(20); b0 = new JButton(0); Container cp = getContentPane(); cp.add(tf,BorderLayout.NORTH); cp.add(b0,BorderLayout.CENTER); setDef
11、aultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); public static void main(String args) myFrame mf=new myFrame(); ,4.3 抽象类,抽象类就是那些类中存在一些没有完全实现的方法的类。不能给抽象类创建对象,但是可以使用抽象类作为基类派生出其他类。 抽象类中那些没有实现的方法称为抽象方法,用abstract修饰,没有方法体: abstract funName(参数列表); 例如: public abstract boolean dial();,abstract cla
12、ss Area public abstract double area(); class RectArea extends Area double length,width; public double area() return length*width; class RoundArea extends Area double r; public double area() return Math.PI*r*r; public class ImpleArea public static void main(String args) RectArea rect=new RectArea();
13、RoundArea round=new RoundArea(); System.out.println(rect.area(); System.out.println(round.area(); ,抽象类(abstract class),抽象类不能被实例化 子类继承抽象类时,必须重写抽象方法,否则仍为抽象类,为什么有抽象类?,在面向对象程序设计中,越是处在继承结构的顶层的类,就越概括、越抽象。我们常常需要定义一些表示抽象概念的类,这些类为子类提供一个实现框架,本身却不能提供具体的实例。 抽象类只能被继承,只有其子类覆盖并实现了那些抽象方法后,才能创建对象并使用。,接口(interface)是对
14、抽象类的进一步扩展,是区别于类的另外一种复合数据类型 接口由成员变量和成员函数构成 接口中的成员函数都是抽象方法,即由public abstract修饰。 接口中的成员变量都是常量,即由“public static final”修饰。,4.4 接口 (interface),定义 interface InfA int a=3; boolean con=true; void funcA(int x); interface InfB double b=3.5; public abstract void funcB(double y); ,接口(interface)的定义,public interfa
15、ce 接口名 成员变量; 方法声明; ,接 口支持多继承,interface InfC extends InfA,InfB int c=10; void funcC(); ,接口之间也有继承方式, 接口支持多继承。 接口之间的继承使用 extends关键字。,接 口的使用,用于类的定义 可以通过实现一个或多个接口来定义类。 实现接口使用implements关键字。,public class ImpleC implements InfC public void funcC() System.out.println(c); public void funcA(int x) System.out.p
16、rintln(x=+x); public void funcB(double y) System.out.println(y=+y); public static void main(String args) ImpleC cc=new ImpleC(); cc.funcC(); cc.funcA(c); cc.funcB(b); ,interface InterfaceA public static final int a=3; boolean con=true; public abstract void funcA(int x); interface InterfaceB double b
17、=3.5; public abstract void funcB(double y); interface InterfaceC extends InterfaceA,InterfaceB int c=10; void funcC(); public class ImplementsC implements InterfaceC public void funcC() System.out.println(c); public void funcA(int x) System.out.println(x=+x); public void funcB(double y) System.out.p
18、rintln(y=+y); public static void main(String args) ImplementsC cc=new ImplementsC(); cc.funcC(); cc.funcA(c); cc.funcB(b); ,接口 (interface),class Triangle implements Figure double b, h; Triangle (double u, double v) b = u; h = v; public void parameter() System.out.println(b + “ “ + h); public void ar
19、ea() System.out.println(half*h*b); ,class Circle implements Figure double x, y, r; Circle(double u, double v, double m) x=u; y=v; r=m; public void parameter() System.out.println(x+“ “+y+“ “+r); public void area() System.out.println(pi*r*r); ,Triangle t = new Triangle(2, 3); Circle c = new Circle(4, 5, 6); Figure f = t, c; for (int i =0; i f.length; i+) fi.parameter(); fi.area(); ,interface Figure double half=0.5,pi=3.14159; void parameter(); void area(); ,完整的类的定义的语法如下:,修饰符 class className extends superClass implements interface1,interface2 /一个类只能继承于一个父类,但是可以实现多个接口,实例,myFrameEvent
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新疆阿克苏地区阿瓦提县第四中学物理高二下期末综合测试模拟试题含解析
- 2025届浙江省衢州、丽水、湖州、舟山四地市物理高一下期末统考模拟试题含解析
- 宣传封面字体设计课件
- 宣传园所课件教学
- 宣传党史的课件
- 二零二五年安全培训与认证服务承包合同
- 二零二五年度环保节能型铲车及翻斗车租赁与碳减排合同
- 2025版文化旅游产业投资与合作合同
- 二零二五年度油气田安装工程总承包合同
- 2025版温泉度假村场地租赁安全管理与休闲娱乐服务协议
- 2024-2025学年江苏省连云港市高二上学期期末调研考试物理试题(选修)(解析版)
- 从“全屋定制”到“整家定制”商业模式全景洞察课件
- 2025年中国5-羟基-色氨酸数据监测报告
- GB/T 4948-2025铝合金牺牲阳极
- 医院院长竞聘试题及答案
- 掘进专业试题库及答案
- 首届世界职业院校技能大赛赛项规程 W04增材制造技术;2021年全国职业院校技能大赛教学能力比赛方案
- 2025年数字化转型下的监理计划
- 2025年全省卷烟营销知识理论多选题含答案
- 2025年江苏专转本英语真题及答案
- 火锅餐饮考试题及答案
评论
0/150
提交评论