程序设计基础Java程序设计.ppt
《程序设计基础Java程序设计.ppt》由会员分享,可在线阅读,更多相关《程序设计基础Java程序设计.ppt(49页珍藏版)》请在三一办公上搜索。
1、第6章 Java继承、接口和包,6.1 Java类的继承6.2 Java类的多态6.3 抽象类及抽象方法6.4 final类及final成员6.5 接口6.6 包6.7综合运用实例,6.1 Java类的继承,语法格式:访问控制符 修饰符 class 子类名 extends 父类名 子类新添加数据成员定义、方法成员定义;,6.1.1 子类的声明方式,例:class Animal/动物类public float weight;/重量public void eat()/吃class Mammal extends Animal/哺乳动物类public int heartRate;/新添加数据成员hea
2、rtRatepublic void breathe()/新添加方法成员breathe,6.1 Java类的继承,Java类的继承层次结构中,类Object是最顶级的类,它是Java中所有类的根类,它在java.lang包中定义。,6.1 Java类的继承,class Cat extends Mammal/猫类boolean longhair;/新添加数据成员public void purr()/新添加方法成员,6.1.2 子类对象的创建,【例6-1】定义父类Father和子类Son,在主类Test中创建各自对象并访问父类对象和子类对象。,class Father/父类Father String
3、 name;public void Set_Name(String sn)/设置姓名name=sn;public void Father_Access()System.out.println(我是父亲+name);,6.1 Java类的继承,class Son extends Father/儿子类Son String nickname;/新添加成员nickname描述儿子的小名public void Set_NickName(String sn)/新添加成员 nickname=sn;public void Son_Access()/访问儿子System.out.println(我是儿子+nam
4、e+,我的小名是+nickname);,6.1 Java类的继承,public class Test public static void main(String args)Father fat=new Father();/子类对象定义和初始化fat.Set_Name(彭政);/设置父亲姓名Son son=new Son();son.Set_Name(彭龙);/设置儿子姓名son.Set_NickName(龙龙);/设置儿子小名fat.Father_Access();/访问父亲对象son.Son_Access();/访问儿子对象,6.1 Java类的继承,程序执行结果:我是父亲彭政我是儿子彭龙
5、,我的小名是龙龙,6.1 Java类的继承,父类对象fat和子类对象son,6.1 Java类的继承,6.1.3 子类的构造方法,创建子类对象分两步,首先调用父类构造方法创建好父类部分并初始化,之后调用子类构造方法创建新添加成员部分并初始化。在子类内部可以通过super关键字来访问父类中的成员,包括父类构造方法。,6.1 Java类的继承,【例6-2】构造方法的调用。,class Father/父类Father String name;/姓名 int age;/年龄 public Father(String sn,int a)/父类构造方法 name=sn;age=a;public void
6、Father_Access()System.out.println(“我是父亲”+name+“,今年+age+岁了);,6.1 Java类的继承,class Son extends Father/儿子类Son String nickname;/小名 Son(String n1,String nickname,int age)/子类构造 方法 super(n1,age);/调用父类构造方法 this.nickname=nickname;public void Son_Access()System.out.println(我是儿子+super.name+,小名是+nickname+,今年+supe
7、r.age+岁了);,6.1 Java类的继承,public class Test public static void main(String args)Father fat=new Father(彭政,37);/子类对象定义和初始化Son son=new Son(彭龙,龙龙,10);fat.Father_Access();son.Son_Access();程序执行结果:我是父亲彭政,今年37岁了我是儿子彭龙,小名是龙龙,今年10岁了,6.1 Java类的继承,Java中只能使用super关键字调用父类构造方法,使用方法是:super(父类构造方法中的实际参数),使用super调用父类构造方
8、法时注意super语句只能是子类构造方法中的第一条语句,否则编译出错。另外,虽然super语句写在子类构造方法中,但却不是由子类构造方法调用,而是由系统调用。,6.1 Java类的继承,除了通过super调用父类的构造方法之外,还可以通过super访问父类部分的成员,其使用格式是如下:super.数据成员 或 super.方法成员名(实际参数表),6.1 Java类的继承,Java编译器为每个对象定义了一个特殊数据成员this,该成员属于引用到对象本身。因此可以在类中通过this访问对象本身的各种成员。,6.1.4 在子类中访问父类中的成员,子类和父类同包时:父类中非private成员可以在子
9、类中随意访问。子类和父类不同包时:父类中只有public、protected成员可以在子类中访问。,6.1 Java类的继承,【例6-3】对父类成员的访问。,class A/父类A public int a=2;/父类的公共成员a private int b=3;/父类的私有成员b protected int c=4;/父类的保护成员c int x;/默认访问控制成员 public A()/无参构造方法 public int outputB()return b;/公共方法outputB,6.1 Java类的继承,public class B extends A/子类Bpublic int d;
10、/子类新添加公共成员d public void testVisitControl()System.out.println(“父类子类同包时对父类中各种访问控制成 员的访问:);System.out.println(访问父类中的public成员a=+a);System.out.println(直接访问父类中的private成员b将导致编译出错!);System.out.println(“利用父类的公共接口outputB可以成功n访问父类中 的private成员b=+outputB();System.out.println(访问父类中的protected成员c=+c);System.out.pri
11、ntln(访问父类中的默认访问控制成员X=+x);,public static void main(String args)B b=new B();b.testVisitControl();,6.1 Java类的继承,回目录,6.2 Java类的多态,6.2.1 方法重载,方法重载:在一个类中有多个方法具有相同的名字,但是这些方法的参数的个数、类型或顺序不同。通常情况,需要在同一个类中定义几个功能类似但参数不同的方法时可以用到方法重载。同一类中可以对方法进行重载,在继承层次中同样可以进行方法重载。,例:class Apublic void f()public class B extends A
12、public int f(int)public int f(double),6.2 Java类的多态,6.2.2 方法覆盖,方法覆盖:允许子类对父类中方法重新进行定义(方法名和参数类型、个数、顺序不变)。,6.2 Java类的多态,【例6-4】方法覆盖的使用。,class Circlepublic final double PI=3.1415926;/定义常量PIint r;/定义圆半径double Area()/计算圆的面积return PI*r*r;double Length()/计算圆的周长return 2*PI*r;Circle(int r)this.r=r;,6.2 Java类的多态
13、,class Cylinder extends Circle int h;/定义圆柱体的高 double Area()/覆盖父类中的Area方法 return Area(0.0)+Area(0);/底面积+侧面积 double Area(int i)/计算圆柱体底面积 return 2*super.Area();double Area(double d)/计算圆柱侧面积 return super.Length()*h;double Volume()/计算圆柱体的体积 return super.Area()*h;.,6.2 Java类的多态,public class Testpublic sta
14、tic void main(String args)Circle cir=new Circle(10);Cylinder cy=new Cylinder(20,10);System.out.println(“半径为”+cir.r+“的圆面积是:+cir.Area();System.out.println(底面半径为+cy.r+高为+cy.h+的圆柱体上下底面积是:+cy.Area(0);System.out.println(底面半径为+cy.r+高为+cy.h+的圆柱体侧面积是:+cy.Area(0.0);System.out.println(底面半径为+cy.r+高为+cy.h+的圆柱体表面
15、积是:+cy.Area();System.out.println(底面半径为+cy.r+高为+cy.h+的圆柱体体积是:+cy.Volume();,6.2 Java类的多态,程序执行结果:半径为10的圆面积是:314.15926底面半径为20高为10的圆柱体上下底面积是:2513.27408底面半径为20高为10的圆柱体侧面积是:1256.63704底面半径为20高为10的圆柱体表面积是:3769.91112底面半径为20高为10的圆柱体体积是:12566.3704,6.2 Java类的多态,注意:1、要指明调用父类中的同名覆盖方法需使用super关键字。2、在继承层次上的所有同名覆盖方法一般
16、应该保持相同的访问控制符。,回目录,6.3 抽象类及抽象方法,6.3.1 抽象类和抽象方法的定义,抽象方法:用abstract修饰,同时没有方法体的方法。抽象类:使用关键字abstract定义类,在该类中至少存在一个以上的抽象方法。,例:abstract class Shape/图形抽象类 abstract double Area();/抽象方法,计算面积public abstract class Vehicle/车辆抽象类 protected int weight;public abstract void Setup();/抽象方法,启动,6.3 抽象类及抽象方法,6.3.2 抽象类和抽象方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 Java
链接地址:https://www.31ppt.com/p-6596225.html