收藏 分享(赏)

java类的继承.ppt

上传人:jinchen 文档编号:6842087 上传时间:2019-04-23 格式:PPT 页数:20 大小:127KB
下载 相关 举报
java类的继承.ppt_第1页
第1页 / 共20页
java类的继承.ppt_第2页
第2页 / 共20页
java类的继承.ppt_第3页
第3页 / 共20页
java类的继承.ppt_第4页
第4页 / 共20页
java类的继承.ppt_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、0,继 承,1,本节学习目标:,1.继承的思想 2.JAVA语言继承的实现,2,1、什么是继承?,面向对象程序设计中,可以在已有类的基础上定义新的类,而不需要把已有类的内容重新书写一遍,这就叫做继承。已有的类称为基类或父类,在此基础上建立的新类称为派生类或子类。 运用继承,父类的特性不必再重新定义,就可以被其它类继承。 继承是面向对象编程技术的一个重要机制。较好地解决了代码重用问题。 任何一个类都可以作为基类,从这个基类可以派生出多个子类,这些派生的类不仅具有基类的特征,而且还可以定义自己独有的特征。,3,2、java语言中继承的定义,定义继承的形式为: 类修饰符 class 类名 exten

2、ds 父类 类体 两个类之间的继承关系由extends关键字指明。,4,3、举例1,class Person String name;private int age;Person(String n,int a) name=n; age=a; public void print() System.out.println(“My name is ”+name+”.”); ,class Student extends Person private float java,english;Student(String n,int a, float j,float e) super(n,a);java=j

3、; english=e; void show() System.out.println(“java score is ”+java+”.”);System.out.println(“eng score is ”+english+”.”); ,5,举例1(续),class Xueshengpublic static void main(String args)Student s1=new Student(“tct1“,18,67,89);s1.show();,6,如果子类继承了父类,则子类自动具有父类的全部数据成员(数据结构)和成员方法(功能);但是,子类对父类成员的访问有所限制; 子类可以定义

4、自己的数据成员和成员函数,同时也可以修改父类的数据成员或重写父类的方法; 父类、子类都是“相对”的; 在Java中,Object类为特殊超类或基类,所有的类都直接或间接地继承Object; Java语言只支持单继承,如果要使用多继承的机制,可以运用将要讲解的接口(interface)。,4、关于JAVA语言继承的几点说明:,7,5、包括继承的类成员访问权限,private :只允许该成员自身所属的类访问,不允许子类访问; 默认修饰符:允许定义它的类自身以及处于同一个包中的其它类访问(包括子类);不允许不同包中的子类访问; protected :保护成员,允许定义它的类自身以及处于同一个包中的其

5、它类访问(包括子类);还允许不同包中的子类访问。 public:允许所有类访问该成员; 在同一包中,子类可以访问父类除私有成员(private修饰的)之外的所有属性和方法。,8,类成员的访问权限小结:,9,6、继承中构造函数的调用,(1)在创建一个子类对象时,系统通过子类的构造函数首先调用父类的构造函数,然后执行子类构造函数中的其余语句; (2)子类构造函数使用“super()”调用父类构造函数,super调用要作为子类构造函数的第一条语句; (3)如果子类构造函数中没有super调用,同时父类中不存在带形参的构造函数,则Java会自动加一条默认的super()来调用父类构造函数,负责父类数据

6、成员的初始化,否则系统认为存在语法错误; (4)如果父类声明了带有形参表的构造函数,子类就应当声明带形参的构造函数,同时在子类构造函数的第一条语句提供一个带形参的super调用,提供一个将参数传递给父类构造函数的途径,保证在进行初始化父类时能够获得必要的数据。,10,构造函数继承的实例,class Point protected int x, y; public Point() x=0;y=0;System.out.println(“零点坐标为:“+String1(); public Point(int a,int b) x=a;y=b;System.out.println(“点的坐标为:“+

7、String1();public String String1() return “+x+“,“+y+“; ,11,构造函数继承的实例(续),class Circle extends Point protected double radius;public Circle(double r) radius=r; System.out.println( “零点圆心及坐标为:“ );System.out.println( String2() );public Circle(int p1,int p2,double r) super(p1,p2); radius=r; System.out.print

8、ln( “圆心及坐标为:“);System.out.println( String2() );public String String2() return “坐标: “+String1()+“半径:+radius; ,public class Test1 public static void main( String args )Circle circle1=new Circle(1,2,5); ,12,class Shapepublic int x,y;private int m,n;public Shape() x=10; y=20; m=100; n=200;System.out.pri

9、ntln(“x=“+x+“ “+“y=“+y);System.out.println(“this is a Constractor of shape“);public void measure()int s;s=x*y;System.out.println(“result=“+s);private void show()System.out.println(“x=“+x+“ “+“y=“+y); ,综合举例,13,综合举例(续),class Rectangle extends Shapepublic static void main(String args)int width=30,heigh

10、t=10;Rectangle tt=new Rectangle(); tt.x=width;tt.y=height;tt.measure();/* width=tt.m; 对于Rectangle子类不能继承父类的私有成员变量的值,所以此语句会产生语法错误*/ height=tt.n; 与上相同/ tt.show(); /不能引用show()私有方法 ,14,this 与super,this 表示当前活动对象本身。任何一个活动的对象都有一个默认的this指针指向自己。 使用格式:this.成员变量名;this.成员方法名; 用法之一: class X1int x,y;X1(int x,int y

11、)this.x=x;this.y=y;Public static void main(String args) X1 a=new X1(1,2); ,15,super 表示当前活动对象的直接父类对象。 使用格式:super.成员变量名;super.成员方法名;super(传递给父类成员变量的参数) 用法:见前例注意:静态方法中不能使用this和super。,16,属性的隐藏和方法的覆盖,属性的隐藏是指子类中定义了和父类同名的属性, 实际应用较少。 方法的覆盖是指类中定义了和父类同名的方法,子类在调用这个同名方法时,默认是调用它自己定义的方法,而将从父类继承来的方法“覆盖”住,好像此方法不存在一

12、样。如果一定要调用父类的同名方法,可以使用“super”关键字。(见书例5-1),17,观察下面程序的运行结果,class X1 Protected int x,y; X1(int i) x=I;y=x*2; int gety() return y; void show() System.out.println(“x=”+x+” ”+”y=”+y); class Myclasspublic static void main( String args ) X2 x=new X2(5);x.sety();x.show();,class X2 extends X1 Protected int x,y

13、; X2(int j) super(3); this.x=j; int gety() return y; void show() System.out.println(“super.x=”+super.x+” ”+”this.x=”+x); void sety() y=super.x*this.x; System.out.println(“super.y=”+x.gety(); System.out.println(“this.y=”+x.y);,18,7、终止继承,如果一个类被final修饰符所修饰,那么这个类就不能有子类。 被定义为final的类通常是一些用来完成某些标准功能的类,这些类中

14、的属性和方法固定下来,不希望通过继承来改变,保证这个类所实现的功能正确无误。,19,上机作业:,题目首先设计一个人员类person作为基类,其数据成员为姓名、年龄和性别,成员函数显示信息;设计person的子类学生类student,student的数据成员有math、english和java成绩,要有求总分和平均分的成员函数和显示信息的成员函数。要求:1 成员变量可以通过构造函数参数传值来赋值。2 将person类的成员变量的修饰符分别设置为默认修饰符、public、protected和private分别进行测试,观察和分析运行结果。注意: 1、理解题意。 2、上机之前在作业本上写出程序。 3、记录调试程序时出现的错误,在作业本上说明出错的原因。,

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

当前位置:首页 > 网络科技 > Java

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报