精华内容
下载资源
问答
  • 抽象类与接口实验报告
    2021-03-13 19:35:52

    类的表现形式

    Java代码

    public class A{}

    类的特点:

    1)类中的属性可以是成员属性,也可以是类属性

    2)类中的方法必须是有方法体的方法,也可以是成员方法,也可以是类方法

    3)每个类必须至少有一个构造方法,默认的是一个无参的构造方法,可以调用构造方法创造对对象

    一个类只能继承一个父类,单根继承

    Java代码

    public class A{}

    public class B extends A{}

    抽象类

    表现形式:

    Java代码

    public abstract class A{}

    抽象类的特点:

    1)抽象类中的属性和类一样,可以是成员属性,也可以是类属性

    2)抽象类中的方法可以是抽象方法,也可以是具体的成员方法

    3)抽象类中的方法需要定义访问限定符

    4)抽象类有构造方法,默认的是一个无参的构造方法,但不能用来创建对象(就是不能new 一个对象)

    5)抽象类是用来充当父类,给子类去继承和扩展的

    一个类只能继承一个抽象类

    接口(interface)

    表现形式:

    Java代码

    public interface A{}

    接口的特点:

    1)接口中的属性必须是公共的常量(必须赋初始值)

    2)接口中的属性默认是public static final,必须是public static final

    3)接口中的方法必须全部只能是抽象方法

    4)接口中的方法默认是public abstract ,必须是public abstract

    5)接口中的方法的访问限定符默认public,必须是public

    6)接口没有构造方法,不能创造对象(就是不能new 一个对象)

    7)接口用来充当父类,给子类去扩展的

    还有接口的实现:

    Java代码

    public class A implements B{}

    一个类可以实现多个接口

    Java代码

    public interface c{}

    public interface d{}

    public class E implements c,d{}

    注意:类实现接口,就必须要实现[重写]接口中的所有的抽象的方法

    重写继承来的方法/实现接口中的方法的时候,不能减小方法的可见范围

    一个类可以先继承一个类,再实现多个接口

    Java代码

    public class F extends A implements c,d{}

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    更多相关内容
  • Java抽象类与接口实验报告
  • 抽象类接口实验报告
  • 1.设计和使用抽象类 2.定义接口以及实现接口的类 3.理解接口继承和多态 二、实验内容 1.(P455,13.1)【三角形类】设计一个扩展自抽象类GeometriObject的新的Triangle类。绘制Triangle类和GeometricObject类的UML图...

    一、实验目的

    1.设计和使用抽象类
    2.定义接口以及实现接口的类
    3.理解接口继承和多态

    二、实验内容

    1.(P455,13.1)【三角形类】设计一个扩展自抽象类GeometriObject的新的Triangle类。绘制Triangle类和GeometricObject类的UML图并实现Triangle类。编写一个测试程序,提示用户输入三角形的三条边、一种颜色以及一个表明该三角形是否填充的布尔值。程序应该根据用户的输入,使用这些边以及颜色和是否填充的信息,创建一个Triangle对象。程序应该显示面积、周长、颜色以及真或者假来表明是否被填充。

    2.(P456, 13.6)【ComparableCircle类】创建名为ComparableCircle的类,它继承自Circle类,并实现Comparable接口。画出UML图并实现compareTo方法,使其根据面积比较两个圆。编写一个测试程序求出ComparableCircle对象的两个实例中的较大者。

    3.(P456,13.7)【可着色接口Colorable】设计一个名为Colorable的接口,其中有名为howToColor()的void方法。可着色对象的每个类必须实现Colorable接口。设计一个扩展GeometricObject类并实现Colorable接口的名为Square的类。实现howToColor方法,显示消息“给所有的四条边着色”。
    画出包含Colorable、Square和GeometricObject的UML图。编写一个测试程序,创建有五个GeometricObject对象的数组。对于数组中的每个对象而言,如果对象是可着色的,那就调用howToColor方法。

    4.【附加题,可选做】【找出最大的对象】编写一个方法,返回对象数组中最大的对象。方法签名如下:
    public static Object max(Comparable[] a)
    所有对象都是Comparable接口的实例。对象在数组中的顺序是由compareTo方法决定的。
    编写测试程序,创建一个由10个字符串构成的数组,一个由10个整数构成的数组和一个由10个日期构成的数组,找出数组中最大的字符串、整数和日期。

    三、实验要求:

    要求每个学生独立完成实验任务。

    四、实验报告
    1.实验结果与分析
    (1)三角形类

    A. UML类图
    在这里插入图片描述
    B. 实验运行
    首先根据提示输入三个边的边长
    在这里插入图片描述
    然后接着根据提示输入字符串类型的颜色信息和布尔类型的填充信息
    在这里插入图片描述最后回车,输出信息在这里插入图片描述
    C.实验过程与结果分析
    首先定义GeometricObject类并定义为抽象类,并定义抽象方法getArea方法和getPerimeter方法;

    public abstract double getArea();
    public abstract double getPerimeter();	
    

    然后定义Triangle类并继承自GeometricObject类,定义三个私有边长数据域。

    private double s1,s2,s3;
    

    定义构造方法。

    	this.s1 = s1;
    	this.s2 = s2;
    	this.s3 = s2;
    	setColor(color);
    	setFilled(filled);
    	Date dateCreated = new Date();
    	setDateCreated(dateCreated);
    

    重写抽象getArea方法和getPerimeter方法。

    public double getArea() {
    		double p = (s1+s2+s3) / 2;
    		return Math.sqrt(p*(p-s1)*(p-s2)*(p-s3));
    	}
    	public double getPerimeter(){
    		return s1 + s2 + s3;
    }
    

    重写已有toString方法。

    public String toString(){
    	return super.toString() + " and area: " + getArea() + " and perimeter: " + getPerimeter();
    }
    

    然后在主方法内测试程序并调用构造方法构造三角形,然后返回测试信息。

    created on Sun Jun 16 19:23:53 CST 2019
    color: white and filled: false and area: 1054.8037435940394 and perimeter: 149.0

    (2)ComparableCircle类
    A. UML类图
    在这里插入图片描述
    B.实验运行
    首先根据提示输入两个圆半径
    在这里插入图片描述
    回车返回哪个圆面积较大,并输出面积大小
    在这里插入图片描述
    C.实验过程与结果分析
    首先定义ComparableCircle类,继承自Circle类,实现Comparable接口

    public class ComparableCircle extends Circle implements Comparable<ComparableCircle> 
    

    然后重写Comparable内的抽象方法,根据大小关系返回大于0,等于0,小于0的值

    public int compareTo(ComparableCircle d){
    		if(this.getArea() < d.getArea())return -1;
    		else if(this.getArea() == d.getArea())return 0;
    		else return 1;
    }
    

    再在主方法内测试程序,创建两个ComparableCircle类型的实例,输入两个半径值并用相关set方法定义实例,再根据调用的compareTo方法输出不同的值。

    if(c1.compareTo(c2) < 0)System.out.println("两圆中的较大者为第二个,面积为" + c2.getArea());
    else if(c1.compareTo(c2) == 0)System.out.println("两圆等大,面积为" + c2.getArea());
    else System.out.println("两圆中的较大者为第一个,面积为" + c1.getArea());
    
    两圆中的较大者为第二个,面积为201.06192982974676
    

    (3)可着色接口Colorable
    A. UML类图
    在这里插入图片描述
    B. 实验运行
    直接回车运行产生结果
    在这里插入图片描述
    C. 实验过程与结果分析
    首先创建Colorable接口并定义抽象方法howToColor

    public interface Colorable {
    		public abstract void howToColor();
    }
    

    然后定义Square类,继承自GeometricObject类,实现Colorable接口

    public class Square extends GeometricObject implements Colorable
    

    再定义私有的是否可以涂颜色的布尔类型数据域和边长的double数据域和其set和get方法

    private boolean canbecolored;
    private double side;
    

    重写GeometricObject类的抽象方法

    	@Override
    	public double getArea() {
    		return side * side;
    	}
    	@Override
    	public double getPerimeter() {
    		return 4 * side;
    }
    

    然后在主方法测试程序,设置一个GeometricObject类型,指向Square类型的一维数组,长度为5;然后循环对数组内的元素创建空间(注意在这里我们要将GeometricObject类型的对象强制转型到Square),然后随机设置是否可以涂色(使用Random类对象的nextBoolean方法)

    GeometricObject[] geometricObjects = new Square[5];
    	for(int i = 0; i < 5;i++){
    	geometricObjects[i] = new Square();
    	((Square)geometricObjects[i]).setCanbecolored(random.nextBoolean());
    }
    

    再循环输出五个实例是否被涂色

    for(int i = 0; i < 5;i++){
    		System.out.println("第" + (i+1) + "个对象");
    		if(((Square)geometricObjects[i]).getCanbecolor()){
    			((Square)geometricObjects[i]).howToColor();
    		}
    		else System.out.println("不可着色");
    }
    

    第1个对象
    不可着色
    第2个对象
    给所有的四条边着色
    第3个对象
    不可着色
    第4个对象
    不可着色
    第5个对象
    给所有的四条边着色

    (4)附加题:找出最大的对象
    A.UML类图
    在这里插入图片描述
    B.实验运行
    首先根据提示输入相关信息,其中日期以YYYY-MM-DD格式输入
    在这里插入图片描述
    回车,返回三种类型的最大值
    在这里插入图片描述
    C.实验过程与结果分析
    首先根据题目要求定义max方法,其中Comparable是接口类,可以是这三类类型的实例数组,然后用instanceof语句判断是哪个类型。

    if(a[0] instanceof String){return max;}
    	if(a[0] instanceof Date){return max;}
    if(a[0] instanceof Integer){return max;}
    return null;
    

    在每个类型内循环遍历使用compareTo方法求最大值(以Date类为例)

    Date max = (Date)a[0];
    	for(int i = 1;i < a.length;i++){
    		if(a[i].compareTo(max) > 0)max = (Date)a[i];
    	}
    return max;
    

    在主方法内定义三个类型的五个长度的数组

    Integer[] num = new Integer[10];
    String[] strings = new String[10];
    Date[] dates = new Date[10];
    

    然后输入内容,其中使用util库内的Date类,然后使用SimpleDateFormat类的时间类型定义(yyyy-mm-dd),然后用其内的方法parse(input.next())输入到Date类型实例中

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    for(int i = 0; i < 10;i++){
    		dates[i] = new Date();
    		dates[i] = simpleDateFormat.parse(input.next());
    }
    

    最后调用max方法,输出结果即可

    int max1 = (int)max(num);
    	String max2 = (String)max(strings);
    	Date max3 = (Date)max(dates);
    	System.out.println("最大整数为: " + max1);
    	System.out.println("最大字符串为: " + max2);
    System.out.println("最大日期为: " + max3);
    

    3.心得体会

    本次实验主要考查对抽象类与接口的方法的运用,同时在建立类与实例的连接上回顾了之前学过的继承与多态相关知识。
    本次实验的难度比较适中,在学过的基础上其实更是针对性的强化,但在附加题的多态,接口和继承的综合应用时有难度的提升,首先遇到的就是Comparable接口是所有类型的父类的一个思想的运用就让我想了很长时间,还有Date类型参量传入的时候,刚开始想的是使用int类型传入,但是测试之后发现没办法转换,就将Date类从sql库转到了util库,再上网查到了SimpleDateFormat定义的方法,最后顺利解决这种问题。
    本次是最后一次实验,在这八次实验中,我认为题目都是很有针对性且很有练习性的,这八次实验的应用,确实提高了我的有关Java的代码能力,同时对理论知识的掌握也在实践的过程中不断深化,实验课是十分有效果的。

    4.附源代码

    1)experiment1	
    GeometricObject类
    import java.util.Date;
    public abstract class GeometricObject {
    	private String color = "white";
    	private boolean filled;
    	private Date dateCreated;
    	
    	protected GeometricObject(){
    		dateCreated = new Date();
    	}
    	protected GeometricObject(String color,boolean filled){
    		dateCreated = new Date();
    		this.color = color;
    		this.filled = filled;
    	}
    	
    	public String getColor(){
    		return color;
    	}
    	public void setColor(String color) {
    		this.color = color;
    	}
    	public boolean isFilled() {
    		return filled;
    	}
    	public void setFilled(boolean filled) {
    		this.filled = filled;
    	}
    	public void setDateCreated(Date dateCreated) {
    		this.dateCreated = dateCreated;
    	}
    	public Date getDateCreated() {
    		return dateCreated;
    	}
    	@Override
    	public String toString() {
    		return "created on " + dateCreated + " \ncolor: " + color
    				+ " and filled: " + filled;
    	}
    	public abstract double getArea();
    	public abstract double getPerimeter();	
    }
    Triangle类
    import java.util.Date;
    import java.util.Scanner;
    public class Triangle extends GeometricObject{
    	private double s1,s2,s3;
    	
    	public Triangle(double s1,double s2,double s3,String color,boolean filled){
    		this.s1 = s1;
    		this.s2 = s2;
    		this.s3 = s2;
    		setColor(color);
    		setFilled(filled);
    		Date dateCreated = new Date();
    		setDateCreated(dateCreated);
    	}
    	public double getArea() {
    		double p = (s1+s2+s3) / 2;
    		return Math.sqrt(p*(p-s1)*(p-s2)*(p-s3));
    	}
    	public double getPerimeter(){
    		return s1 + s2 + s3;
    	}
    	public String toString(){
    		return super.toString() + " and area: " + getArea() + " and perimeter: " + getPerimeter();
    	}
    	public static void main(String[] args) {
    		double s1,s2,s3;
    		String color;
    		boolean filled;
    		Scanner input = new Scanner(System.in);
    		System.out.println("请输入三条边的值与颜色填充信息: ");
    		System.out.print("第一条边长");
    		s1 = input.nextDouble();
    		System.out.print("第二条边长");
    		s2 = input.nextDouble();
    		System.out.print("第三条边长");
    		s3 = input.nextDouble();
    		System.out.print("颜色信息");
    		color = input.next();
    		System.out.print("是否被填充");
    		filled = input.nextBoolean();
    		Triangle triangle = new Triangle(s1, s2, s3, color, filled);
    		System.out.println(triangle.toString());
    
    	}
    }
    
    2)experiment2
    Circle类
    public class Circle {
    	private double radius = 1;
    	public Circle() {}
    	public Circle(double newRadius){
    		radius = newRadius;
    	}
    	public double getArea(){
    		return radius * radius * Math.PI;
    	}
    	public double getPerimeter(){
    		return 2 * radius * Math.PI;
    	}
    	public void setRadius(double radius) {
    		this.radius = radius;
    	}
    	public double getRadius() {
    		return radius;
    	}
    }
    ComparableCircle类
    import java.util.Scanner;
    public class ComparableCircle extends Circle implements Comparable<ComparableCircle> {
    		public int compareTo(ComparableCircle d){
    			if(this.getArea() < d.getArea())return -1;
    			else if(this.getArea() == d.getArea())return 0;
    			else return 1;
    		}
    		
    		public static void main(String[] args) {
    			Scanner input = new Scanner(System.in);
    			ComparableCircle c1 = new ComparableCircle();
    			System.out.println("输入第一个圆的半径");
    			double r1 = input.nextDouble();
    			c1.setRadius(r1);
    			ComparableCircle c2 = new ComparableCircle();
    			System.out.println("输入第二个圆的半径");
    			double r2 = input.nextDouble();
    			c2.setRadius(r2);
    			if(c1.compareTo(c2) < 0)System.out.println("两圆中的较大者为第二个,面积为" + c2.getArea());
    			else if(c1.compareTo(c2) == 0)System.out.println("两圆等大,面积为" + c2.getArea());
    			else System.out.println("两圆中的较大者为第一个,面积为" + c1.getArea());
    		}
    
    }
    
    3)experiment3
    GeometricObject类:见experiment1
    Colorable接口
    public interface Colorable {
    	public abstract void howToColor();
    }
    Square类
    import java.util.Random;
    public class Square extends GeometricObject implements Colorable{
    	private boolean canbecolored;
    	private double side;
    	public double getSide() {
    		return side;
    	}
    	public void setSide(double side) {
    		this.side = side;
    	}
    	@Override
    	public void howToColor(){
    		System.out.println("给所有的四条边着色");
    	}
    	@Override
    	public double getArea() {
    		return side * side;
    	}
    	@Override
    	public double getPerimeter() {
    		return 4 * side;
    	}
    	public void setCanbecolored(boolean canbecolored) {
    		this.canbecolored = canbecolored;
    	}
    	public boolean getCanbecolor() {
    		return canbecolored;
    	}
    	
    	public static void main(String[] args) {
    		Random random = new Random();
    		GeometricObject[] geometricObjects = new Square[5];
    		for(int i = 0; i < 5;i++){
    			geometricObjects[i] = new Square();
    			((Square)geometricObjects[i]).setCanbecolored(random.nextBoolean());
    		}
    		for(int i = 0; i < 5;i++){
    			System.out.println("第" + (i+1) + "个对象");
    			if(((Square)geometricObjects[i]).getCanbecolor()){
    				((Square)geometricObjects[i]).howToColor();
    			}
    			else System.out.println("不可着色");
    		}
    	}
    
    	
    }
    
    4)experiment4:附加题
    Max类
    import java.util.Date;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Scanner;
    
    public class Max {
    	public static Object max(Comparable[] a){
    		if(a[0] instanceof String){
    			String max = (String)a[0];
    			for(int i = 1; i < a.length;i++){
    				if(a[i].compareTo(max) > 0)max = (String)a[i];
    			}
    			return max;
    		}
    		if(a[0] instanceof Date){
    			Date max = (Date)a[0];
    			for(int i = 1;i < a.length;i++){
    				if(a[i].compareTo(max) > 0)max = (Date)a[i];
    			}
    			return max;
    		}
    		if(a[0] instanceof Integer){
    			int max = (Integer)a[0];
    			for(int i = 1;i < a.length;i++){
    				if(a[i].compareTo(max) > 0)max = (Integer)a[i];
    			}
    			return max;
    		}
    		return null;
    	}
    	public static void main(String[] args) throws ParseException {
    		Scanner input = new Scanner(System.in);
    		Integer[] num = new Integer[10];
    		String[] strings = new String[10];
    		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
    		Date[] dates = new Date[10];
    		System.out.println("请输入十个整数: ");
    		for(int i = 0; i < 10;i++){
    			num[i] = input.nextInt();
    		}
    		System.out.println("请输入十个字符串: ");
    		for(int i = 0; i < 10;i++){
    			strings[i] = input.next();
    		}
    		System.out.println("请输入十个时间: ");
    		for(int i = 0; i < 10;i++){
    			dates[i] = new Date();
    			dates[i] = simpleDateFormat.parse(input.next());
    		}
    		input.close();
    		int max1 = (int)max(num);
    		String max2 = (String)max(strings);
    		Date max3 = (Date)max(dates);
    		System.out.println("最大整数为: " + max1);
    		System.out.println("最大字符串为: " + max2);
    		System.out.println("最大日期为: " + max3);
    	}
    	
    }
    
    
    展开全文
  • Java的抽象接口实验报告

    千次阅读 2016-09-09 18:43:10
    实验报告 课程名称 面向对象程序设计 实验日期 2016.03.30 实验项目名称 Java的抽象接口 实验地点 1#608 实验类型 □验证型 √设计型 □综合型...

    实验报告

    课程名称

    面向对象程序设计

    实验日期

    2016.03.30

    实验项目名称

    Java的抽象和接口

    实验地点

    1#608

    实验类型

    □验证型    √设计型

    □综合型   

    学  时

    2

    一、实验目的及要求(本实验所涉及并要求掌握的知识点)

    1、 掌握抽象类和抽象方法的使用。

    2、 熟悉类中接口的定义和实现。

     

    二、实验环境(本实验所使用的硬件设备和相关软件)

    安装XP操作系统的电脑一台

    JDK1.6安装软件

    MyEclipse软件

    三、实验内容及步骤

    1、定义一个抽象类Shape,它包含一个抽象方法getArea(),从Shape类派生出Rectangle和Circle类,这两个类都用getArea()方法计算对象的面积。编写应用程序使用Rectangle和Circle类。

    实验要求:定义Rectangle和Circle类的构造方法,初始化成员变量。

     

    2、学校中有老师和学生两类人,而在职研究生既是老师又是学生。(1)设计两个信息管理接口StudentInterface和TeacherInterface,其中StudentInterface接口包括setFee()方法和getFee()方法,分别用于设置和获取学生的学费,TeacherInterface接口包括setPay()和getPay()方法,分别用于设置和获取老师的工资。

    (2)定义一个研究生类Graduate,实现StudentInterface接口和TeacherInterface接口,它定义的成员变量有name(姓名),sex(性别),age(年龄),fee(每学期学费) pay(月工资)。

    (3)创建一个姓名为“zhangsan”的研究生,统计他的年收入和学费,如果收入减去学费不足2000元,则输出“You  need a loan!”(需要贷款)的信息,否则输出“You income is enough!”信息。

       实验要求:在Graduate中实现各个接口声明的抽象方法。

    四、实验结果(本实验源程序清单及运行结果或实验结论、实验设计图)

     

    第一题:

    package firsrpakeage;

    public class Test01 {

        public static void main(String[] args) {

           Rectangle rectangle=new Rectangle(3,5);

           double area=rectangle.getArea();

           System.out.println("矩形的面积是:"+area);

           Circle circle=new Circle(2);

           area=circle.getArea();

           System.out.println("圆的面积是:"+area);

        }

    }

    abstract class Shape{

        public abstract double getArea();

    }

    class Rectangle extends Shape{

        private double width;

        private double height;

        public Rectangle(double width,double height){

           this.width=width;

           this.height=height;

        }

        public double getArea(){

           return width*height;

        }

    }

    class Circle extends Shape{

        private double r;

        public Circle(double radius){

           this.r=radius;

        }

        public double getArea(){

           return Math.PI*r*r;

        }

    }

     

    第二题:

    package secondpackage;

     

    interface StudentInterface{

        void setFee(int fee);

        int getFee();

    }

    interface TeacherInterface{

        void setPay(int pay);

        int getPay();

    }

    class Graduate implements StudentInterface,TeacherInterface{

        private String name;

        private String sex;

        private int age;

        private int fee;

        private int pay;

        public Graduate(String name,int fee,int pay){

           super();

           this.name=name;

           this.fee=fee;

           this.pay=pay;

           if(this.pay-this.fee<2000)

               System.out.println("You  need a loan!");

           else

               System.out.println("You income is enough");

        }

        public int getFee(){

           return this.fee;

        }

        public int getPay(){

           return this.pay;

        }

        public void setFee(int fee){

           this.fee=fee;

        }

        public void setPay(int pay){

           this.pay=pay;

        }

        public String getName(){

           return name;

        }

        public void setName(String name){

           this.name=name;

        }

        public String getSex(){

           return sex;

        }

        public int getAge(){

           return age;

        }

        public void setAge(int age){

           this.age=age;

        }

    }

    public class Test02 {

        public static void main(String[] args) {

           new Graduate("zhangsan",1000,1500);

        }

     

    }

     

     

    五、实验总结(对本实验结果进行分析,实验心得体会及改进意见)

     

     

     

    展开全文
  • 《JAVA实验6继承与接口.doc

    千次阅读 2021-03-17 22:42:14
    《JAVA实验6继承与接口山西大学计算机...(4) 理解接口与抽象类的区别。[实验要求]复习理论教学中所学的内容。认真进行实验预习,查阅参考书,书写源程序,书写实验预习报告。认真总结实验并书写实验报告。[实验内...

    《JAVA实验6继承与接口

    山西大学计算机与信息技术学院

    实验报告

    姓 名学 号专业班级课程名称实验日期成 绩指导教师批改日期实验名称(1) 学习如何定义接口 ;

    (2) 掌握接口的实现方式 ;

    (3) 使用实现了接口的类 ;

    (4) 理解接口与抽象类的区别。

    [实验要求]

    复习理论教学中所学的内容。

    认真进行实验预习,查阅参考书,书写源程序,书写实验预习报告。

    认真总结实验并书写实验报告。

    [实验内容]

    类的继承性练习

    (1) 程序源代码如下。

    public class Student

    {

    protected String xm; //姓名,具有保护修饰符的成员变量

    protected int xh;//学号

    void setdata(String xm,int xh) //设置数据的方法

    {

    this.xm=xm;

    this.xh=xh;

    }

    public void print() //输出数据的方法

    {

    System.out.println(xm+", "+xh);

    }

    }

    (2) 编译源并运行程序。贴图如下

    (二)创建将被继承的类

    (1) 程序功能:通过Student类产生子类CollegeStudent,其不仅具有父类的成员变量xm(姓名)、xh(学号),还定义了新成员变量xy(学院)、bj(bj)。在程序中调用了父类的print 方法,同时可以看出子类也具有该方法。

    程序代码:

    运行结果贴图:

    (三)了解成员方法的覆盖方式

    编写覆盖了Object 类toString方法的一个类,并用System.out.println()输出该类的一个对象。

    程序代码:

    运行结果贴图:

    试着以Point类为例,尝试为Object类的clone()和equals()方法进行覆盖,Point类包含私有成员x,y,构造方法1(包含两个参数a,b),构造方法2(参数为Point p),clone方法,equals方法,toString方法。用TestPoint类进行测试。

    程序代码:

    运行结果贴图:

    (四)this、super和super()的使用

    程序功能:程序功能:说明this、super 和super()的用法。程序首先定义Point(点)类,然后创建点的子类Line(线)。最后通过TestLine类输出线段的长度。程序中通过super(a,b)调用父类Point 的构造方法为父类的x 和y 赋值。在子类Line 的setLine方法中,因为参数名和成员变量名相同,为给成员变量赋值,使用this 引用,告诉编译器是为当前类的成员变量赋值。在length 和toString 方法中使用父类成员变量时,使用super 引用,告诉编译器使用的是父类的成员变量。

    程序代码:

    运行结果贴图:

    (五) 接口的实现与运用

    实验任务 :

    本实验的任务是设计和实现一个 Soundable 接口 , 该接口具有发声功能 , 同时还能够调节声音大小。 Soundable 接口的这些功能将会由 3 种声音设备来具体实现 , 它们分别是收音机 Radio 、随身昕 Walkman 和手机 Mobilephone 。最后还要设计一个应用程序类来使用这些实现了 Soundable 接口的声音设备类。程序运行时 , 先询问用户想听哪种设备 , 然后程序就会按照该设备的工作方式来发出声音。

    实验步骤 :

    (1) 仔细阅读程序, 并完成其中的代码1~代码3。

    // InterfaceTest.java

    import java.util.Scanner;

    interface Soundable {

    public void increaseVolume( );

    public void decreaseVolume( );

    public void stopSound( );

    public void playSound( );

    }

    class Radio implements Soundable {

    public void increaseVolume( ) {

    System.out.println("增大收音机音量");

    }

    public void decreaseVolume( ) {

    System.out.println("减小收音机音量");

    }

    public void stopSound( ) {

    System.out.println("关闭收音机");

    }

    展开全文
  • 【三角形类】设计一个扩展自抽象类GeometriObject的新的Triangle类。绘制Triangle类和GeometricObject类的UML图并实现Triangle类。编写一个测试程序,提示用户输入三角形的三条边、一种颜色以及一个表明该三角形是否...
  • 下面实例定义了一个抽象类和一个接口抽象类中定义一个手机的属性和方法,接口定义一个玩游戏的方法。 抽象类代码: //抽象类是一个父类+约束 父类是为了实现代码重用 约束是为了多态变化 单继承 is a public...
  • Java抽象类与接口学习心得

    千次阅读 2015-11-23 17:17:18
    Java抽象类的“三必须” “五不能” ,抽象类与接口联系玉区别;
  • 首先,我们先看看javac++在一些方面的不同和相似点1.Java虚函数C++中普通成员函数加上virtual关键字就成为虚函数Java中其实没有虚函数的概念,它的普通函数就相当于C++的虚函数,动态绑定是Java的默认行为。...
  • 抽象类接口总结

    2020-11-01 21:04:15
    可以,抽象类可以实现多个接口 2、接口接口之间的关系 extends 接口不能继承抽象类 一个子类只能继承一个抽象类 一个子类可以实现多个接口 class Frog extends Animal implements IRunning, ISwimming{ } 访问权限...
  • 《Java实验7抽象类接口》由会员分享,可在线阅读,更多相关《Java实验7抽象类接口(11页珍藏版)》请在人人文库网上搜索。1、实验6抽象类接口一、 实验目的:1、 学习掌握抽象类的概念和使用方法。2、 学习掌握...
  • 完成该题目并写设计报告实验报告给出设计思想和设计方法及其所涉及到的有关内容第11周上课时交设计报告 代码发到邮箱wldl6@126.com并在邮件主题中注明你的学号和姓名 问题 利用抽象类接口分别设计程序并比较两种...
  • java实验报告
  • 1. 【三角形类】设计一个扩展自抽象类GeometriObject的新的Triangle类。绘制Triangle类和GeometricObject类的UML图并实现Triangle类。编写一个测试程序,提示用户输入三角形的三条边、一种颜色以及一个表明该三角形...
  • 4.不能同时继承类和接口,也不能同时继承抽象类接口。我先创建了以下文件。图片备用地址文件目录结构先看看每个文件的代码【AnimalAbstract】抽象类里添加了2个函数,其中一个是抽象函数。package animals.animal;...
  • 实验报告一.实验目的(1)掌握的继承(2)变量的继承和覆盖,方法的继承,重载和覆盖的实现;二.实验的内容(1)根据下面的要求实现圆Circle。1.圆Circle的成员变量:radius表示圆的半径。2.圆Circle的方法成员:...
  • java包与接口实验报告

    2011-06-21 13:49:38
    与接口实验报告 实验 包接口 【实验目的】 1. 了解Java 中包(package)、接口(interface)的作用。 2. 掌握包、接口设计方法。 【实验要求】 1. 了解Java 系统包的结构。 2. 掌握创建自定义包的方法。 3. ...
  • 抽象类实现某一个接口时,可以覆写接口的所有方法,也可不必覆写接口的所有方法。 如果某一个抽象类没有实现接口的所有方法时,那么当其他类继承这个抽象类的时候。必须要覆写这个抽象类没有实现接口的方法。如图...
  • 抽象类接口

    2014-06-01 16:41:06
    1. 设计并使用抽象类; 2.学习如何定义接口,掌握接口的实现方式,使用实现了接口的类; 3.理解接口与抽象类的区别。
  • 学院 专业 班、学号 姓名 教师评定_________________实验题目 继承与接口一、 实验目的要求实验目的:1、掌握的继承关系。 2、掌握接口的定义使用。 实验要求:按下列要求编写Java程序:1、定义接口Printx,...
  • JAVA实验报告,IO编程,JAVA基本语法,接口抽象类与包,类继承
  • java 抽象类接口的一点实验

    千次阅读 2010-07-11 10:03:00
     一个抽象类,该抽象类中引用一个接口变量,同时,定义一个抽象方法abstract public doAct();该抽象类采用2种注入方式的其中一种:  一: 在该抽象类中定义一个方法,该方法接受一个字符串参数,在该...
  • JAVA第六次实验报告接口.pdfJAVA第六次实验报告接口.pdfJAVA第六次实验报告接口.pdfJAVA第六次实验报告接口.pdfJAVA第六次实验报告接口.pdfJAVA第六次实验报告接口.pdf
  • 一....1.抽象类不能进行实例化,想要使用,只能创建该抽象类的子类,然后让子类重写抽象类中的抽象方法. 2.在抽象类中可以有和普通类一样的数据成员和方法,其方法可以被重写,也可以被子类直接调用. 3.
  • 西安财经学院信息学院《Java 程序设计》 实验报告实验名称 类与对象 实验室 实验楼521 实验日期 2012年4月10日类与对象一、实验目的1、掌握的定义和使用,编写构造方法及成员方法。2、能够创建的实例,掌握对象...
  • 精选文库 PAGE PAGE 2 西 安 邮 电 大 学 计算机学院 课内实验报告 实验名称 继承多态 专业名称 计算机科学技术 班 级 计科1405班 学生姓名 高宏伟 学 号 04141152 指导教师 刘霞林 实验日期 2016.10.13 一实验...
  • 通常客户端使用这个是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象。如果在系统运行中,有很多地方都需要使用配置文件的内容,系统中会同时存在多份配置文件的内容,这会严重浪费内存资源。 事实...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,544
精华内容 4,217
关键字:

抽象类与接口实验报告

友情链接: ASPjiemi.rar