第七周课程总结&实验报告(五)
实验四 类的继承一、实验目的理解抽象类与接口的使用; 二、实验要求掌握使用抽象类的方法。 三、实验内容(一)抽象类的使用
2.编程技巧 (1) 抽象类定义的方法在具体类要实现; (2) 使用抽象类的引用变量可引用子类的对象; (3) 通过父类引用子类对象,通过该引用访问对象方法时实际用的是子类的方法。可将所有对象存入到父类定义的数组中。 (二)使用接口技术 1定义接口Shape,其中包括一个方法size(),设计"直线"、"圆"、类实现Shape接口。分别创建一个"直线"、"圆"对象,将各类图形的大小输出。 编程技巧 (1) 接口中定义的方法在实现接口的具体类中要重写实现; (2) 利用接口类型的变量可引用实现该接口的类创建的对象。 实验过程(请自己调整格式) (1)实验代码 abstract class shape { public abstract double print(); //定义抽象方法 } class Triangle extends shape { //子类通过继承抽象类 private double a; private double b; private double c; //定义三角形特有的变量 public Triangle(double a,double b,double c){ //为属性初始化 this.a=a; this.b=b; this.c=c; //为属性赋值 } public double print() { //子类调用抽象方法 double p=(a+b+c)/2; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); //返回该图形面积 } } class Rectangle1 extends shape { private double width; private double height; //定义矩形特有的变量 public Rectangle1(double width,double height){ //为属性初始化 this.height=height; this.width=width; //为属性赋值 } public double print() { //子类调用抽象方法 return width*height; //返回该图形面积 } } class Circle1 extends shape { //子类通过继承抽象类 double radious; //定义圆形特有变量 public Circle1(double radious){ //为属性初始化 this.radious=radious; //为属性赋值 } public double print() { //子类调用抽象方法 return Math.PI*radious*radious; //返回该图形面积 } } public class Test1 { public static void main(String[] args){ shape s1=new Triangle(5,7,8); shape s2=new Rectangle1(4,9); shape s3=new Circle1(5); //通过子类为抽象类实例化 System.out.println("三角形的面积为:"+s1.print()); System.out.println("矩形的面积为:"+s2.print()); System.out.println("圆的面积为:"+s3.print()); //输出 } } 实验结果: (2)实验代码: public interface Shape { //定义接口Shape public abstract void size(); //定义抽象方法 } class Straight implements Shape{ //子类实现Shape接口 private double figure; public Straight(double figure){ //为属性初始化 this.figure=figure; //为属性赋初始值 } public void size() { //覆写Shape接口的抽象方法 System.out.println("直线的大小:"+figure); } } class Circle2 implements Shape{ //子类实现Shape接口 private double radious; public Circle2(double radious){ //为属性初始化 this.radious=radious; //为属性赋初始值 } public void size() { //覆写Shape接口的抽象方法 System.out.println("圆的面积:"+Math.PI*radious*radious); } } public class TESE2 { public static void main(String[] args){ Shape s1=new Straight(5); Shape s2=new Circle2(7); //实例化子类对象 s1.size(); s2.size(); //分别调用接口定义的方法 } } 实验结果: 实验总结:本次实验让我对接口和继承这两个概念有了一个更深刻的认识,后续还需要更深层的去学习理解。 学习总结1.抽象类抽象类的定义格式: 抽象类的一些使用细则:包含一个抽象方法的类必须是抽象类;抽象类和抽象方法都要使用abstract关键字来声明; 抽象类必须被子类继承,子类必须覆写抽象类中的全部抽象方法;抽象方法只需要声明但不需要实现。且普通类不能有 抽象方法。 2.接口接口的定义格式: 概念:接口是一种特殊的类,里面全部是由全局变量和公共的抽象方法组成。 注意:抽象方法必须定义成public访问权限。 接口的使用和抽象类一样都是需要通过子类来实现,而子类通过implements关键字来实现接口(可实现多个接口)。 实现接口的格式 class 子类 implements 接口A(注:可有多个接口){ } 下面用书上的一个图来总结一下抽象类与接口之间的关系: 自我总结上周的学习总结做的不好,这周我有很多知识点都是自己总结了的,比起上周还是有些许进步吧,冲呀!!! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |