自考英语《英语国家概况》冲刺练习.ppt

上传人:牧羊曲112 文档编号:6019821 上传时间:2023-09-15 格式:PPT 页数:24 大小:316.61KB
返回 下载 相关 举报
自考英语《英语国家概况》冲刺练习.ppt_第1页
第1页 / 共24页
自考英语《英语国家概况》冲刺练习.ppt_第2页
第2页 / 共24页
自考英语《英语国家概况》冲刺练习.ppt_第3页
第3页 / 共24页
自考英语《英语国家概况》冲刺练习.ppt_第4页
第4页 / 共24页
自考英语《英语国家概况》冲刺练习.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《自考英语《英语国家概况》冲刺练习.ppt》由会员分享,可在线阅读,更多相关《自考英语《英语国家概况》冲刺练习.ppt(24页珍藏版)》请在三一办公上搜索。

1、4.3 继承和多态,父类和子类-继承和继承的实现,定义:类继承是指一个类可以继承其他类所有的非私有成员变量和成员方法。被继承的类称为父类,继承后产生的类称为子类。,格式:,修饰符 class 类名 extends 父类名 类体;,子类的直接父类是该子类直接继承的类,而间接父类则是两级或两级以上的父类。子类只能有一个直接父亲,称单继承。JAVA中只允许单继承,即仅允许每个类有一个直接父类,不允许有多个直接父类,但一个类可以有多个子类。,子类除了继承父类非私有的属性和方法外,还可以有自己的属性和方法。,子类可以继承父类的构造函数,构造函数的继承遵循以下的原则:子类无条件地继承父类的不含参数的构造函

2、数。若子类没有定义自己的构造函数,它将继承父类无参数的构造函数作为自己的构造函数。若子类定义了自己的构造函数,它先执行继承自父类的无参数构造函数,再执行自己的构造函数。对父类含参数的构造函数,子类可以通过在定义自己的构造函数中使用super关键字来调用它,但这个调用语句必须是子类构造函数的第一个可执行语句。,附构造函数的继承,例:要求定义三个类:Person类,Student类,测试使用Student类的应用程序类TestStudent.java。其中Person类是Student类的直接父类,定义了姓名、性别、年龄,在Student类中,定义了数学、语文课成绩,并求平均成绩。,/Person

3、.javapublic class Person protected String name;protected char sex;protected int age;public Person()public Person(String str,char ch,int i)name=str;sex=ch;age=i;public String toString()return 姓名:+name+性别:+sex+年龄:+age;,/Student.javapublic class Student extends Person protected int chinese,math;public

4、Student()public Student(String str,char ch,int x,int y,int z)name=str;sex=ch;age=x;chinese=y;math=z;public int average()return(chinese+math)/2;,子类要调用父类的构造函数,可用super()来实现。这里可替换为:super(str,ch,x),子类构造函数的形参表,只能使用其父类构造函数中用过的形参表,或者是对它的扩充。,/TestStudent.javapublic class TestStudent public static void main(S

5、tring args)Student s1=new Student();System.out.println(“s1:”+s1.toString()+“成绩;+s1.average();Student s2=new Student(Tom,m,25,88,97);System.out.println(s2:+s2.toString()+成绩;+s2.average();,注:调用子类不含参数的构造函数时,先调用父类不含参数的构造函数,程序运行后,结果为多少?,思考:,4.3.2 子类对父类的变量隐藏和方法覆盖,继承性可以使子类继承父类所有非私有的变量和方法,当一个父类成员不适合该子类时,子类可

6、以重新定义它。,变量的隐藏:子类重新定义从父类继承来的同名变量。,这时子类若引用父类的同名变量,要用super关键字做前缀:super.变量名,方法的覆盖:子类重新定义从父类继承来的同名方法。即:方法头与父类一样,方法体不一样。这也是Java多态性的表现之一。,覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型。覆盖方法时,不能使用比父类中被覆盖的方法更严格的访问权限。若子类中调用被覆盖的父类中的同名的方法,可以通过super关键字做前缀:super.方法名(),/Automobile.javapublic class Automobile public double speed

7、;Automobile()speed=200.0;public double get_speed()return speed;,/Car.javapublic class Car extends Automobile public double speed;Car()speed=0.0;public double add_class()speed=speed+1;return speed;public double add_fa_class()super.speed=super.speed+1;return speed;,/TestCar.javapublic class TestCar pu

8、blic static void main(String args)car c1=new car();System.out.println(speed of car:+c1.add_class()+speed of Automobile:+c1.get_speed();System.out.println(speed of car:+c1.add_fa_class()+speed of Automobile:+c1.get_speed();,程序运行后,结果为多少?,思考:,4.3.3 抽象类和最终类,一、抽象类,Java中可以定义一些不含方法体的方法,它的方法体的实现交给该类的子类根据自己的

9、情况去实现,这样的方法就是抽象方法,包含抽象方法的类就叫抽象类。一个抽象类中可以有多个抽象方法。,abstract 返回值类型 抽象方法(参数列表);,抽象方法的写法:,抽象类必须用abstract关键字来修饰;抽象方法也必须用abstract来修饰,abstract不能用来修饰变量。,含有抽象方法的类肯定是抽象类,抽象类中的某个方法不一定是抽象的。,抽象类不能被实例化,也就是不能用new关键字去产生对象。,如果一个类继承自某个抽象父类,而没有具体实现抽象父类中的抽象方法(编写方法体),则必须定义为抽象类(用abstract修饰)。,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则该子类

10、还是个抽象类。,例 编写一个程序,首先定义一个描述平面图形的抽象类Figure,然后派生出圆类Circle和矩形类Rectangle。由于平面图形都有面积,其父类中可定义求面积的方法area()。但子类求面积的方法area()是不同的,因此父类Figure中将area()定义为抽象方法area(),就可以求出子类所描述的形状的面积。,/Figure.javapublic abstract class Figureprotected double x;Figure()Figure(double x1)/定义边长x=x1;abstract public double area();public S

11、tring toString()return x=+x;,/Circle.javapublic class Circle extends Figure/圆类 public Circle(double x1)super.x=x1;public double area()/具体实现父类中的抽象方法,求圆面积 return 3.14*x*x;public String toString()return 圆:t+super.toString()+t area=+area();,/Rectangle.javapublic class Rectangle extends Figure/长方形类 prote

12、cted double y;public Rectangle()public Rectangle(double a,double b)super(a);y=b;public double area()/具体实现父类中的抽象方法,求长方形面积 return x*y;,public String toString()return长方形t+super.toString()+t y=+y+t area=+area();,/TestFigure.javapublic class TestFigure public static void main(String args)Rectangle R1=new Rectangle(10.0,20.0);Circle C1=new Circle(10.0);System.out.println(R1.toString();System.out.println(C1.toString();,运行结果为:,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号