文档库 最新最全的文档下载
当前位置:文档库 › java实验四对象和类(抽象类、接口与包)

java实验四对象和类(抽象类、接口与包)

java实验四对象和类(抽象类、接口与包) 实验四对象和类(抽象类、接口与包) 一、实验目的

1、熟练掌握抽象类abstract的概念。

2、熟练掌握接口interface的概念。

3、熟练包package的概念以及编译运行的方法。

4、熟练掌握内部类inner class的概念。

5、熟练掌握递归的概念。

6、理解面向对象的程序设计方法。

二、实验内容与要求

1(编写求解几何图形(如三角形,矩型,圆,多边型)的周长、面积的应用程序,要求用到继承、多态、抽象类、接口、内部类等面向对象程序设计技术的特

点。

程序如下:

abstract class Geometric{ //定义抽象类

abstract double getPerimter();

abstract double getArea(); }

interface MY{ //定义接口

float getarea();

float getperimter();

}

class sanjiaoxing extends Geometric{ //三角形类继承抽象类

private float a;

private float b;

private float c;

sanjiaoxing(float x1,float x2,float x3){

a=x1;b=x2;c=x3;

}

double getPerimter(){

return a+b+c;

}

double getArea(){

float p=(a+b+c)/2;

return Math.sqrt(p*(p-a)*(p-b)*(p-c));

}

}

class yuanxing extends Geometric{ //圆类继承抽象类private float radius;

yuanxing(float a){

radius=a;

}

double getPerimter(){

double p;

p=2*3.14f*radius;

return p;

}

double getArea(){

return 3.14f*radius*radius;

}

}

class juxing implements MY{ //矩形类实现接口

private float height;

private float width;

juxing(float a,float b){

height=a;width=b;

}

public float getperimter(){

return 2*(width+height);

}

public float getarea(){

return width*height;

}

}

class abc{

public static void main(String args[]){ sanjiaoxing obj1=new sanjiaoxing(3,4,5); System.out.println("当三角形三边是3,4,5时:"); System.out.println("边长是:"+obj1.getPerimter()); System.out.println("面积是:"+obj1.getArea()); yuanxing obj2=new yuanxing(4);

System.out.println("当圆的半径是4时:");

System.out.println("周长是:"+obj2.getPerimter());

System.out.println("面积是:"+obj2.getArea());

juxing obj3=new juxing(3,4);

System.out.println("当矩形长和宽是3,4时:");

System.out.println("周长是:"+obj3.getperimter());

System.out.println("面积是:"+obj3.getarea());

}

}

结果如下:

, 出现的问题1:需要定义抽象类和接口,并用三角形、矩形和圆形来实现

里边定义的方法。

2、重写上面的程序,要求三角形,矩型,圆,多边型的类放到不同的包中,用包的技术组织程序的设计。同时要求程序能从键盘上接受数据以便求解不同的几何图形的周长面积。

程序如下:

这是在a包中的三角形类:

package a;

import java.util.Scanner;

public class sanjiaoxing {

float a;

float b;

float c;

public void shuru()

{

Scanner s = new Scanner(System.in); String str = s.next();

String[] arr = str.split("/");

a = Float.parseFloat(arr[0]);

b = Float.parseFloat(arr[1]);

c = Float.parseFloat(arr[2]);

}

public float getPerimter(){

return a+b+c;

}

public double getArea(){

float p=(a+b+c)/2;

return Math.sqrt(p*(p-a)*(p-b)*(p-c)); }

}

这是在b包中矩形的类:

package b;

import java.util.Scanner;

public class juxing {

float height;

float width;

public void shuru()

{

Scanner s = new Scanner(System.in); String str = s.next();

String[] arr = str.split("/"); height = Float.parseFloat(arr[0]); width = Float.parseFloat(arr[1]); }

public float getperimter(){

return 2*(width+height);

}

public float getarea(){

return width*height;

}

}

这是在c包中圆形的类:

package c;

import java.util.Scanner;

public class yuanxing {

float radius;

public void shuru()

{

Scanner s = new Scanner(System.in); String str = s.next();

String[] arr = str.split("/");

radius = Float.parseFloat(arr[0]);

}

public double getPerimter(){

double p;

p=2*3.14f*radius;

return p;

}

public double getArea(){

return 3.14f*radius*radius;

}

}

这是在Tuxing项目中实现程序的代码: import a.sanjiaoxing;

import b.juxing;

import c.yuanxing;

public class Tuxing {

public static void main(String[] args) { sanjiaoxing obj1=new sanjiaoxing(); juxing obj2=new juxing();

yuanxing obj3=new yuanxing();

System.out.println("请输入三角形三条边:");

obj1.shuru();

System.out.println("周长是:"+obj1.getPerimter()); System.out.println("面积是:"+obj1.getArea()); System.out.println("请输入矩形宽和长:");

obj2.shuru();

System.out.println("周长是:"+obj2.getperimter()); System.out.println("面积是:"+obj2.getarea()); System.out.println("请输入圆的半径:");

obj3.shuru();

System.out.println("周长是:"+obj3.getPerimter()); System.out.println("面积是:"+obj3.getArea());

}

}

结果如下:

出现的问题1:刚开始不知道怎么把各个不同的类放在不同的包中,所以弄了很久,还有一个问题是题目要求程序能从键盘上接受数据以便求解不同的几何图形的周长面积,所以刚开始老师给的程序段看不懂,所以就上网找了另一段代码,即public void shuru()

{

Scanner s = new Scanner(System.in);

String str = s.next();

String[] arr = str.split("/");

a = Float.parseFloat(arr[0]);

b = Float.parseFloat(arr[1]);

c = Float.parseFloat(arr[2]);

}

,(练习https://www.wendangku.net/doc/c119069054.html,ng.Class类的使用,通过一个对象返回一个Class对象,如何获取一个类的名称,如何使用class生成一个类的对象。获取类的描述信息。程序如下:

public class abcd

{

public static void main(String arg[]) {

abcd t=new abcd();

Class tc=t.getClass();

String s=tc.getName();

System.out.println("name:"+s); }

}

结果如下:

, 出现的问题1:这个程序是在网上找到的代码,因为不是很明白

https://www.wendangku.net/doc/c119069054.html,ng.Class类的使用,通过一个对象返回一个Class对象。

4(从命令行输入一个正整数,用递归的方法求出每位数字上的累加和程序如下:

import java.util.Scanner;

public class zhengshu{

int n;

public void shuru()

{

Scanner s = new Scanner(System.in);

String str = s.next();

String[] arr = str.split("/");

n = Integer.parseInt(arr[0]);

}

public int jisuan()

{

int s=0,b;

b=n%10;

while(b!=0)

{

b=n%10;

n=n/10;

s=s+b;

}

return s;

}

public static void main(String[] args){

zhengshu obj=new zhengshu();

System.out.println("请输入一个正整数:");

obj.shuru();

System.out.println("各位数相加和是:");

System.out.println(obj.jisuan());

}

}结果如下:

, 出现的问题1:这个程序主要是要明白当从命令行输入的正整数有不一样

的位数,所以就必须要使用循环语句来实现位数的相加。

三、思考题

1(定义一个矩形类Rectangle,再定义接口InterfaceRec,其中包含方法getArea ();

由矩形类派生出一个正方形类,自行扩充成员变量和方法,并实现此接口InterfaceRec中的方法。

答:程序如下:

interface MY{ //定义接口

float getarea();

}

class juxing{ //矩形类

private float height;

private float width;

public float getperimter(){

return 2*(width+height);

}

}

class zheng extends juxing implements MY{ //正方形类继承矩形类和实现接口

private float a1;

public float getarea(){

return a1*a1;

}

public float getperimter(){

return 2*(a1+a1);

}

zheng(float a){

a1=a;

}

public static void main(String args[]){

zheng obj=new zheng(3);

System.out.println("当正方形宽是:3");

System.out.println("周长是:"+obj.getperimter());

System.out.println("面积是:"+obj.getarea());

}

} 2. 内部类inner class和外部类的区别,

答:内部类是存在于某个外部类中,可以将内部类看成是外部类的成员。 3(抽象类和接口的区别,

答:含有抽象方法才是抽象类,抽象类作为父类被继承;而接口里的方法都是抽象方法,所有变量都是static变量,接口可以实现多重继承。

四、实验心得:通过这个实验四,我明白了如何使用接口、抽象、继承和包,

抽象和接口的使用基本差不多,但不一样的是抽象类作为父类被继承;而接口里的方法都是抽象方法,所有变量都是static变量,接口可以实现多重继承,即一个类可以实现多个接口。继承分为私有继承、保护继承和公有继承,子类可以继承父类里的所有数据成员和成员方法,所以就可以避免重复书写

父类中的数据成员和成员方法,子类中也可以覆盖父类中成员方法。使用包可以防止类命名的混乱,包可以将类组织成单元,控制包中类、接口、成员变量和方法的可见性,除了类中所有的成员变量和方法可以被同一包中的其他类和方法访问。

实验四 Java知识

实验四java知识 本实验目的是练习如何创建Java 的基本语法,以及面向对象的知识,为后续的实验作好准备工作。 【课堂练习】一 (1)对数组排序 【实验效果】 根据实验要求,您必须在浏览器的地址栏中输入:Tomcat服务器的IP地址和端口号,如:http://localhost:8080/sort.jsp 【课堂练习】Java面向对象思想 课堂练习——包创建和引用 案例:新建Project项目,在该项目中创建aa.bb包,然后再引入java.util包中的Date类,并创建ShiJian类,练习包的创建和引用。 课堂练习——相同包之间的访问 案例:在已经建立Project项目中创建mr.bbb包,然后在该包中创建Test和ImpTest两个类,测试同包之间类的访问。 课堂练习——不同包中类之间的访问 案例:在已经建立Project项目中创建mr.aaa包和mr.zzk包,然后分别在包中创建Exam 和ImpExam两个类,测试不同包之间类的访问。 课堂练习——final变量 案例:在已经建立Project项目中创建mingri包,并在该包中创建T1类,在该类中定义一个final变量,然后再主方法中创建T1类的实例,并测试能否改变final变量的值。

课堂练习——final方法 案例:在已创建的项目Project的包mingri中创建T1类的之类ExT1,然后再ExT1类中测试是否能重写父类T1中的final方法。 课堂练习——继承性 案例:在项目的包aaa中创建A和B两个类,使类B是类A的子类,然后在子类B中创建B的实例,并通过该实例分别调用类A和类B的方法,掌握继承的原理。 课堂练习——抽象类 案例:在项目的包aaa中创建抽象类Example及其子类SubExample,在抽象类Example 中分别定义一个成员方法和一个抽象方法,并在子类中进行测试。 课堂练习——权限访问 案例:在项目的包aaa中创建类Exm,在该类中分别定义4种权限修饰符的成员变量并附初值,然后在主方法中创建类的实例,并分别输出这4个成员变量的值,测试上述4种权限修饰符的成员变量在当前类中的可见性。 案例:在项目的包aaa中创建类SameExm,也就是和前一个例子中创建的Exm类都放在同一个包aaa中,然后在SameExm类的主方法中创建类Exm的实例,并分别输出类Exm中4个成员变量的值,测试上述4种权限修饰符的成员变量在相同包的其他类中的可见性。

java实验指导书

实验一java开发环境及语言基础 实验目的 (1)确保正确配置java开发环境。 (2)了解javac和java命令的使用。 (3)熟悉java中的运算符。 (4)掌握条件语句和循环语句的使用。 (5)掌握通过命令行参数接受数据。 (6)掌握用Scanner类接受数据。 实验内容 (1)在控制台中输入java命令,查看输入结果。 (2)编写一个java程序,计算半径为3.0的圆周长和面积并输出结果。 (3)求a+aa+aaa+...+a...a(n个)的和,其中a为1~9之间的整数。例如,当a=3、n=4时,求3+33+333+3333的和。 (4)给定一个正整数m,统计其位数,分别打印每一位数字,再按照逆序打印出各位数字。(5)用Scanner类方法输入三角形三边求三角形面积。 实验要求 (1)JDK的安装及配置。 (2)在DOS及eclipse下编辑、编译运行第一个java程序:hello world。 (3)求圆周长和面积用方法实现,主函数调用。 (4)从命令行输入1~9之间的整数a,当所求的和大与106时,输出相应的a值及所求的和值。 (5)用Scanner类的方法输入正整数m,m的值不应该超过99999,否则给出错误信息。应引入包:import java.util.Scanner,然后在需要的方法中实例化对象:Scanner sc = new Scanner(System.in),最后调用对象的next方法,如int n=nextInt(),接受整数。 实验二数组 实验目的 (1)掌握数组的定义和使用方法。 (2)熟悉数组的排序、查找的方法。 (3)巩固循环的使用。 实验内容 (1)使用for循环,将二维数组的行与列互换,即完成矩阵的转置。 (2)编写数组的排序程序。 (3)编写杨辉三角。 实验要求 (1)编写一个界面1 选择排序2 冒泡排序3插入排序4 快速排序5 退出 当选择1、2、3、4、5的时候完成相应的功能。 (2)杨辉三角形状为等腰三角形 实验三字符串 实验目的 (1)掌握正则表达式的使用。 (2)熟悉java的字符串。

Java实验

实验3 继承和多态 一、实验目的: 1、学习和使用类的继承。 2、掌握关键字super的意义和用法。 3、学习掌握类的方法覆盖技术。 4、熟悉Object类,以及它提供给子类的方法equals、toString、clone。 5、学习掌握修饰符protected和final的用法。 6、学习掌握抽象类的概念和使用方法。 7、学习掌握多态性和动态绑定的概念,学习使用多态进行程序设计。 8、学习掌握接口的概念和定义接口的方法。 9、学习使用Cloneable接口和clone方法进行对象容的复制。 10、理解浅复制和深复制的概念,掌握覆盖clone方法进行对象容深复 制的技术。 二、实验任务: 1、使用Java SDK建立一个非图形化的标准Java程序学习和使用类的继承、 掌握关键字super的意义和用法、掌握类的方法覆盖技术、熟悉Object 类,以及它提供给子类的方法equals、toString、clone、学习掌握抽象 类的概念和使用方法、学习掌握多态性和动态绑定的概念,学习使用多 态进行程序设计。程序要求: (1)首先创建一个类家族,其中抽象类几何图形类GeometricObject 为父类,圆类Circle和矩形类Rectangle为子类。几何图形类

GeometricObject中定义保护型字符串变量color,表示图形的颜 色;该类要具备构造方法和两个抽象方法findArea和 findPerimeter,抽象方法findArea求图形面积,抽象方法 findPerimeter求图形周长。 (2)Circle类和Rectangle类是GeometricObject类的子类,其中应实现父类的抽象方法。 (3)创建静态方法equalArea,用来比较图形的面积(不是以上三个类的成员方法)。方法名称如下: static boolean equalArea(GeometricObject object1, GeometricObject object2) (4)创建静态方法displayGeometricObject,用来显示几何对象的信息(不是以上三个类的成员方法)。方法名称如下: static void displayGeometricObject(GeometricObject object) (5)程序主方法中创建两个几何对象,一个圆和一个矩形,并用GeometricObject类的引用变量引用它们,调用equalArea比较两 个对象的面积是否相等,并调用displayGeometricObject方法显 示对象信息。 2、使用Java SDK建立一个非图形化的标准Java程序,进一步学习多态特 性以及接口的概念和利用接口实现多态的方法。程序要求如下: (1)首先创建圆类Circle和圆柱体类Cylinder,其中Circle类是父类,Cylinder类是子类;

java基础面向对象编程题

java基础面向对象编程题 好的,下面是一些关于Java基础面向对象编程的问题,我将从 多个角度进行回答。 1. 什么是面向对象编程? 面向对象编程(Object-Oriented Programming,简称OOP)是 一种编程范式,它将程序中的数据和操作数据的方法进行封装,形 成对象,并通过对象之间的交互来实现程序的功能。 2. Java中的类和对象有什么区别? 在Java中,类是对象的模板或蓝图,用于定义对象的属性和行为。而对象则是类的实例,具体的实体,可以通过类来创建和使用。 3. 什么是封装? 封装是面向对象编程的一项重要特性,它将数据和操作数据的 方法封装在一个类中,对外部隐藏了内部的实现细节,只提供公共 的访问接口。这样可以保护数据的安全性,并提高代码的可维护性

和可复用性。 4. 什么是继承? 继承是面向对象编程的另一个重要特性,它允许一个类继承另一个类的属性和方法。通过继承,子类可以直接使用父类的成员,同时还可以扩展或修改父类的功能。 5. 什么是多态? 多态是面向对象编程的又一重要特性,它允许不同的对象对同一消息做出不同的响应。通过多态,可以提高代码的灵活性和可扩展性。在Java中,多态可以通过继承和接口实现。 6. 什么是抽象类和接口? 抽象类是一种不能被实例化的类,它只能作为其他类的父类来使用。抽象类可以包含抽象方法和具体方法,子类必须实现抽象方法才能被实例化。接口是一种完全抽象的类,它只包含抽象方法和常量的定义,子类必须实现接口中的所有方法才能被实例化。 7. 什么是重写和重载?

重写(Override)是指子类重新定义父类中已有的方法,方法名、参数列表和返回类型必须相同。重载(Overload)是指在一个 类中定义多个同名但参数列表不同的方法,通过参数的个数、类型 或顺序的不同来区分。 8. 什么是构造方法? 构造方法是一种特殊的方法,用于创建对象时进行初始化操作。它与类同名,没有返回类型,并且在使用new关键字创建对象时自 动调用。 9. 什么是静态变量和静态方法? 静态变量是属于类而不是对象的变量,它在类加载时被初始化,且只有一份拷贝。静态方法是属于类而不是对象的方法,它可以直 接通过类名调用,无需创建对象。 10. 什么是对象的引用? 在Java中,对象的引用是指变量存储的是对象的地址,通过引 用可以操作对象的属性和方法。多个引用可以指向同一个对象,通

java实验报告大全

实验一Java开发环境的安装与配置 一.实验目的: 1.通过本次实验,掌握JDK的安装步骤,理解环境变量PATH,CLASSPATH的作用,以及它们的设置方法。 2.熟悉TextPad(或JCreater) 编辑环境,编写简单的Application程序,并编译和解释执行。 3.掌握JAVA中包的概念,以及包与包的引用关系。 4.记录编译和执行JAVA程序当中的系统错误信息提示,并给出解决办法。 二.实验环境: windows7 myeclipse2015 三.实验内容: 1.下载并安装JDK 为了建立基于SDK 的Java 运行环境,需要先下载Sun 的免费SDK 软件包。SDK 包含了一整套开发工具,其中包含对编程最有用的是Java 编译器、Applet 查看器和Java 解释器。Sun公司网址:https://www.wendangku.net/doc/c119069054.html,; 2. 设置系统环境变量 JDK 中的工具都是命令行工具,要从命令行即MS-DOS 提示符下运行它们。很多人可能会不习惯,但这是Sun 特意采取的策略,为的是把精力更多地投入到Java 语言本身而不是花在开发工具上。在桌面“我的电脑”图标上单击右键,选择“属性”菜单,将出现系统特性设置界面,如图所示。 ○1、在“系统变量”框中选择“Path”,然后单击“编辑”按钮,在出现的“编辑系统变量”对话框中,在“变量值”栏的命令前添加“C:\j2sdk1.4.2_05\bin;”命令,如图所示。各个环境

变量间用“;”号相隔。 ○2、设置环境变量classpath,新建一个环境变量名:classpath,其值为“.; C:\j2sdk1.4.2_05\lib\tools.jar”。classpath环境变量是java虚拟机寻找类文件的路径,比 如程序需要调用的类库文件等,一般常用的类库都包含在tools.jar里。“.”表示当前目录,一 定要加。 ○3、设置完成后,单击“开始”→“所有程序”→“附件”→“命令提示符”打开DOS 窗口,在命令提示符下输入“java”或“javac”,回车后,如果出现其用法参数提示信息,则安装正确,如图所示。 3、编辑运行第一个java程序; .编写一个简单的Java应用程序,要求输出“Welcome to Java!”。 步骤:○1、用文本编辑器(Windwos系统的“记事本”)编辑源代码 (1)单击"开始"菜单,选择"程序"——“附件”——“记事本”,启动“记事本”文本编辑器软 件。 (2)录入如下程序代码 public class Ex1{ public static void main(String args[ ]) { System.out.println("Welcome to Java!"); } }

实验5:Java抽象类与接口

实验5:Java抽象类与接口 实验时间:实验地点:一、实验目的及要求 (1)掌握抽象类的概念及使用。 (2)掌握接口的概念和实现方式。 (3)理解抽象类和接口的区别。 二、实验设备环境及要求 三、实验任务 (1)输入给定的Java Application程序,写出运行结果。 (2)按照要求编写Java Application程序。 四、实验内容与步骤 1.分析下列程序的输出结果。 interface Myface{ int getnext(); void setstart(int x); } class Add3 implements Myface{ int sta,val; Add3(){ sta=0;val=0; } public int getnext(){ val+=3; return val; } public void setstart(int i){ sta=i;

val=i; } } public class Face{ public static void main(String args[]){ Add3 a=new Add3(); for(int i=0;i<5;i++) System.out.println(a.getnext()); System.out.println(); a.setstart(10); for(int i=0;i<5;i++) System.out.println(a.getnext()); } } 2.按照要求编写Java Application程序。 假定要为某个公司编写雇员工资支付程序。这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资: 经理(Manager):每月获得一份固定的工资; 销售人员(Salesman):在基本工资的基础上每月还有销售提成; 一般工人(Worker):则按他每月工作的天数计算工资。 试用类的继承及相关机制描述这些功能需求,并编写一个Java Application程序,演示这些类的用法。 五、实验指导与处理 六、分析讨论

实验五 包、接口 抽象类

实验五包、接口抽象类 【开发语言及实现平台或实验环境】 Windows2000 或XP,JDK1.6与Eclipse 【实验目的】 1. 理解抽象类和接口概念 2. 掌握接口、抽象类的设计方法。 3. 理解和掌握接口的实现和通过接口访问方法 【实验要求】 1. 理解和掌握抽象类的定义与作用。 2. 掌握使用系统接口的技术和创建自定义接口的方法。 【实验内容】 一.抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。如果我们要开发一个作图软件包,就会发现问题领域存在着点、线、三角形和圆等这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。 1.抽象方法 抽象方法的声明格式如下:abstract returnType abstractMethodName([paramlist]); 抽象方法只能出现在抽象类中。如果一个类中含有抽象方法,那么该类也必须声明为抽象的,否则在编译时编译器会报错 2. 抽象类 定义一个抽象类需要关键字abstract,其基本格式如下: abstract class ClassName{ ... } 抽象类不能被实例化,在程序中如果试图创建一个抽象类的对象,编译时Java编译器会提示出错。 二.static 声明的成员变量/方法被视为类的成员变量/方法,而不把它当作实例对象的成员变量/方法。换句话说,静态变量/方法是类固有的,可以直接引用,其它成员变量/方法仅仅被声明,生成实例对象后才存在,才可以被引用 1.写出程序运行结果 class StaticDemo { static int x; int y; static{ x=10; } public static int getX() { return x; } public static void setX(int newX) { x = newX;

Java实验四报告

一、实验目的 1.掌握Java语言中继承和多态的相关概念 2.掌握Java程序设计中继承和多态机制的使用 3.掌握Java语言中接口和包的概念及使用。 二、实验内容 1.题目: 1.继承多态综合练习1 (1)建立一个Java抽象类Drink,应当: ①声明一个抽象方法taste(),该方法负责输出饮料的味道; ②声明int型常量来代表不同的饮料类型(咖啡、啤酒、牛奶),如: ③声明静态方法getDrink(int drinkType),根据传入的参数创建不同的饮料对象,并返回该对象,建议使用switch语句。 (2)建立Drink的子类: ①分别建立Drink的子类:Coffee(咖啡类),Beer(啤酒类),Milk(牛奶类); ②实现taste()方法,要求在控制台打印各自的味道特征。 (3)建立Test测试类,测试以上内容的正确性 ①编写main方法,输入要新建的饮料类型。 ②调用Drink类的getDrink方法,获得相应的饮料对象。然后调用该饮料对象的taste()方法,输出该饮料的味道。 ②编译程序,并运行。 要求:测试类放在包名为com.sy4.exe02.test包中,其它类放在com.sy4.exa02包中。 (知识点:类的定义,抽象类,继承,多态) 2.继承多态综合应用练习2 (1)定义一个抽象的People类,有姓名(name),年龄(age),性别(sex)等成员变量,要求成员变量的访问修饰符为private,通过getXxx()和setXxx()方法对各变量进行读写。声明具有一个抽象的role()方法,该方法不返回任何值,用于输出人的身份类型,同时至少定义两个构造方法。 (2)定义一个抽象类Employee类,该类继承People类,该类具有People类的所有成员,并新增雇员底薪薪水(salary)和职工编号(empid)成员变量。同样要有至少两个构造方法,要体现出this和super的几种用法。声明具有一个抽象的getSalary()方法,该方法返回float 值,用于返回员工薪水。 (3)定义SalariedEmployee类,它是Employee的子类,拿固定工资的员工,他的薪水

java面向对象编程语法

java面向对象编程语法 Java 是一种面向对象的编程语言,它的语法和特性使得开发者可以使用类和对象来组织和管理代码。以下是Java 面向对象编程的一些基本语法和概念: 1. 类和对象: -定义类:使用`class` 关键字定义类,类是一个模板,描述了对象的属性和行为。 ```java public class MyClass { // 类成员和方法 } ``` -创建对象:使用`new` 关键字创建类的实例(对象)。 ```java MyClass myObject = new MyClass(); ``` 2. 成员变量和方法: -成员变量:类的属性,可以是各种数据类型。 ```java public class Student { String name; int age; } ``` -方法:类的行为,封装了一系列操作。 ```java public class Calculator { int add(int a, int b) { return a + b; } } ``` 3. 构造方法: -构造方法用于创建对象时进行初始化,方法名与类名相同。 ```java public class Person { String name; // 构造方法

public Person(String n) { name = n; } } ``` 4. 访问修饰符: - `public`:公开,任何地方都可访问。 - `private`:私有,只能在类内部访问。 - `protected`:受保护,类内部和子类可访问。 -默认(无修饰符):在同一个包内可访问。 5. 继承: -使用`extends` 关键字实现继承,子类继承父类的属性和方法。 ```java public class ChildClass extends ParentClass { // 子类特有的成员和方法 } ``` 6. 多态: -多态允许不同的子类对象调用相同的方法,产生不同的行为。 ```java class Animal { void makeSound() { // 默认实现 } } class Dog extends Animal { void makeSound() { System.out.println("Woof!"); } } class Cat extends Animal { void makeSound() { System.out.println("Meow!"); } } ``` 7. 接口和抽象类: -接口定义了一组方法,类实现接口来实现这些方法。

抽象类、接口和包作业

抽象类、接口和包——作业 Question 1 Given: 11.public interface Status { 12./* insert code here */ int MY_VALUE = 10; 13.} Which three are valid on line 12? (Choose three.) A.final B.static C.native D.public E.private F.abstract G.protected Question 2 Given: 10.interface Foo {} 11.class Alpha implements Foo { } 12.class Beta extends Alpha {} 13.class Delta extends Beta { 14.public static void main( String[] args) { 15.Beta x = new Beta(); 16.// insert code here 17.} 18.} Which code, inserted at line 16, will cause a https://www.wendangku.net/doc/c119069054.html,ng.ClassCastException? A. Alpha a = x; B. Foo f= (Delta)x; C. Foo f= (Alpha)x; D. Beta b = (Beta)(Alpha)x; Question 3 Given: 10.package com.sun.scjp; 11.public class Geodetics { 12.public static final double DIAMETER = 12756.32; // kilometers 13.} Which two correctly access the DIAMETER member of the Geodetics class? (Choose two.) A. import com.sun.scjp.Geodetics; public class TerraCarta {

Java程序设计实验指导书(新版)

第Ⅰ部分:实验指导 实验1:Java开发环境J2SE 一、实验目的 (1)学习从网络上下载并安装J2SE开发工具。 (2)学习编写简单的Java Application程序. (3)了解Java源代码、字节码文件,掌握Java程序的编辑、编译和运行过程。 二、实验设备要求 JDK 6.0、JCreator和NetBeans 6.9 三、实验内容 1.安装J2SE开发工具 Sun公司为所有的java程序员提供了一套免费的java开发和运行环境,取名为Java 2 SDK,可以从https://www.wendangku.net/doc/c119069054.html,上进行下载。安装的时候可以选择安装到任意的硬盘驱动器上,例如安装到C:\j2sdk1.6.0_21目录下。教师通过大屏幕演示J2SE的安装过程,以及在Windows98/2000/2003下环境变量的设置方法。 2.安装J2SE源代码编辑工具Edit Plus 教师通过大屏幕演示Edit Plus的安装过程,以及在Windows98/2000/2003操作系统环境下编辑Java 原程序的常用命令的用法。 3.编写并编译、运行一个Java Application程序。 创建一个名为HelloWorldApp的java Application程序,在屏幕上简单的显示一句话"老师,你好!"。

4.编译并运行下面的Java Application程序,写出运行结果。 1:public class MyClass { 2:private int day; 3:private int month; 4:private int year; 5:public MyClass() { 6:day = 1; 7:month = 1; 8:year = 1900; 9:} 10:public MyClass(int d,int m,int y) { 11:day = d; 12:month = m; 13:year = y; 14:} 15:public void display(){ 16:System.out.println(day + "-" + month + "-" + year); 17:} 18:public static void main(String args[ ]) { 19:MyClass m1 = new MyClass(); 20:MyClass m2 = new MyClass(25,12,2001); 21:m1.display(); 22:m2.display(); 23:} 24:}

理解Java的接口与抽象类

理解Java的接口与抽象类 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 一.抽象类 在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为: abstract void fun(); 抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。 下面要注意一个问题:在《JAVA编程思想》一书中,将抽象类定义为“包含抽象方法的类”,但是后面发现如果一个类不包含抽象方法,只是用abstract修饰的话也是抽象类。也就是说抽象类不一定必须含有抽象方法。个人觉得这个属于钻牛角尖的问题吧,因为如果一个抽象类不包含任何抽象方法,为何还要设计为抽象类?所以暂且记住这个概念吧,不必去深究为什么。 [public] abstract class ClassName { abstract void fun();} 从这里可以看出,抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。对于一个父类,如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为abstract方法,此时这个类也就成为abstract类了。 包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:

java面向对象设计知识点

java面向对象设计知识点 在Java编程语言中,面向对象设计是一种强大且常用的编程范式。它的核心思想是将现实世界中的事物抽象为对象,通过定义对象之间 的关系和交互来构建软件系统。在本文中,我将介绍一些Java面向对 象设计的重要知识点。 一、类和对象 在Java中,类是一种将属性和方法封装在一起的抽象数据类型。它是面向对象编程的基础,用于创建对象。对象是类的实例,可以通过new关键字来创建。对象具有状态和行为,可以通过访问对象的属性 和调用对象的方法来操作。 二、封装 封装是面向对象设计的一个重要概念,它将类的属性和方法封装在 一起,限制对内部数据的直接访问。通过封装,可以隐藏对象的实现 细节,提高代码的安全性和可维护性。在Java中,可以使用访问修饰 符(public、private、protected)来实现封装。 三、继承 继承是面向对象设计的另一个核心概念,它允许一个类继承另一个 类的属性和方法。通过继承,可以实现代码的复用和扩展。在Java中,使用关键字extends来实现类的继承。子类可以继承父类的属性和方法,并且可以添加自己的属性和方法。

四、多态 多态是面向对象设计的一个重要特性,它允许一个方法在不同的对 象上具有不同的行为。通过多态,可以提高代码的灵活性和可扩展性。在Java中,多态可以通过方法重写(Override)和方法重载(Overload)来实现。 五、抽象类和接口 抽象类和接口是面向对象设计中的两个重要概念。抽象类是一种不 能实例化的类,它可以包含抽象方法和具体方法。接口是一组抽象方 法的集合,它定义了一种行为规范。通过抽象类和接口,可以实现代 码的模块化和重用。 六、关联和依赖 关联和依赖是描述类之间关系的重要概念。关联表示类之间的对象 关系,可以是一对一、一对多或多对多的关系。依赖表示一个类依赖 于另一个类的对象,表现为方法的参数或局部变量。 七、设计原则 在面向对象设计中,有一些重要的设计原则可以指导程序员编写高 质量的代码。例如,单一职责原则(SRP)要求每个类应该有且只有一个责任;开放封闭原则(OCP)要求软件实体应该对扩展开放,对修 改关闭;依赖倒置原则(DIP)要求依赖关系应该建立在抽象上而不是 具体上。 总结:

Java程序设计单元测试四与答案

一、单选题 1、下列哪一个关键字用于实现接口来定义类?() A.abstract B.interface C.extends D.implements 正确答案:D 2、下列关于修饰符混用的说法,错误的是() A.abstract类中不可以有private的成员 B.abstract能与final同时使用修饰同一个类 C.非static方法中能处理static和非static的成员 D.abstract方法必须在abstract类中 正确答案:B 3、下列对多态性的描述中,错误的是()。 A.Java语言允许方法重载与方法覆盖 B.Java语言允许变量覆盖 C.多态性提高了程序的抽象性和简洁性 D.Java语言允许运算符重载 正确答案:D 4、下面关于接口的描述中,错误的是()。 A.定义接口使用的关键字是interface B.一个类只允许继承一个接口

C.在继承接口的类中通常要给出接口中定义的抽象方法的具体实现 D.接口实际上是由常量和抽象方法构成的特殊类 正确答案:B 5、下列关于抽象类的描述中,错误的是()。 A.抽象类是用修饰符abstract说明的 B.抽象类是不可以有构造方法的 C.抽象类是不可以定义对象的 D.抽象类通常要有它的子类 正确答案:B 6、下列对多态性的描述中,错误的是()。 A.多态性提高了程序的抽象性和简洁性 B.Java语言允许方法重载与方法覆盖 C.Java语言允许变量覆盖 D.Java语言允许运算符重载 正确答案:D 7、要想定义一个不能被实例化的抽象类,在类定义中必须加上修饰符() A.abstract B.private C.public D.final 正确答案:A

第4章-Java语言与面向对象作业习题与答案

第4章Java语言与面向对象作业习题与答案 一、简答题 1.什么是对象?什么是类? 对象是一种抽象数据类型。它包含了事物的静态特征(属性)和动态特征(行为)两大特征。 类是一组同种对象的集合与抽象。即是具有相同属性和方法的一组对象集合。 2.Java语言的单继承是指什么? 一个类可以派生出多个子类,但子类只允许有一个父类,而不允许存在多个父类。3.在一个共有类中的数据成员及方法成员的访问控制符为缺省,则这个类可供什么样的包引用? 当一个类的访问控制符为public共有时,表明这个类作为整体对其它类是可见和可引用的;但其数据成员和方法成员访问控制符为缺省时,它们只能被包中类(含当前类)引用。4.抽象类的用途 (1)设计在更高的层次上进行,不考虑具体对象,从而大大简化了处理问题的复杂性; (2)设计出的类也具有更加良好的可扩展性。 5.什么是非静态的成员变量? 非静态成员即为实例成员变量(没有加static修饰的变量)。 6.异常Exception和错误Error有什么不同?Java如何处理它们? 答:错误通常是指程序本身存在非法情形,常常是因为代码存在问题而引起的,如造成系统崩溃、虚拟机粗错、动态链接失败等,这一类错误无法恢复或不可能捕获,并将导致应用程序中断。 异常表示另外一种“非同寻常”的错误。这种错误通常是不可预测,但可以被捕获且可以恢复。常见的异常情况包括内存不足、找不到所需文件等。 对于错误,编程人员可以通过对程序进行更仔细的检查,以避免这种错误。 对于异常,可以使用捕获机制进行捕获,再编写出相应的处理程序。 7.简单陈述Java的异常处理机制。 答:Java采取“抛出—捕获”的方式,一旦一个异常想象产生,Runnable环境和应用程序会抛出各种标准类型和自己定义的异常,系统就可以捕获这些异常,并一定有相应的机制来处理它,确保不会产生司机、死循环或其它对操作系统的损害,从而保证了整个程序运行的安全性。 8.简单陈述throw语句和throws关键字之间的差别。 答:throw语句是在一个方法中用来直接抛出异常对象,其格式是: throw 异常对象; throws关键字是用一个方法声明首部,用来指出这个方法中可能产生若干种异常,其格式:[方法修饰符] 返回类型方法名(参数表)throws 异常类型表 { /*方法体*/ } 二、填空题 1.所有Java应用程序都必须包含的一个类方法是main() 。 2.面向对象程序设计语言的三种重要特性是封装性、继承性和多态性。

北京信息科技大学Java语言程序设计-抽象类和接口

实验4抽象类和接口 【实验宗旨】 每天做一点编程练习。 【实验目的】 1、学习和掌握Java抽象类的定义和使用。 2、学习和掌握Java接口的定义和使用。 3、进一步学习和掌握通用程序设计方法。 【实验步骤(解题过程)】 参见实验2。 【实验内容】 1、( CompareableCirlce 类)创建名为CompareableCircle 类,它扩展Circle 类并实现Compareable接口。画出UM图,实现compareTc方法,使其可以根据面积比较两个圆。编写一个测试程序求出CompareableCircle对象的两个实例中的较大者。 说明:⑴来源编程练习14.2 (P399))。⑵https://www.wendangku.net/doc/c119069054.html,pareable 接口参见14.5 小节 (P378)。⑶Circle类的实现,参见程序清单11.2 ( P303)。 【实验预习】 1. 问题描述:该题描述的是创建一个CompareableCircle类来实现两个圆的比较。 2. 创建两个CompareableCircle类的实例,利用Comparable接口,并调用 ComparableMa方法实现。 【附程序代码】 @SuppressWar nin gs(" un checked") public class testCompareableCircle{ //主方法 public static void main( Stri ng[]args){ CompareableCircle C仁new CompareableCircle(10); CompareableCircle C2=new CompareableCircle(3); System.out.pri ntl n("The max nium Circle is "+ComparableMax(C1,C2)+"的圆"); } //比较两个圆的大小 public static Comparable ComparableMax(Comparable C1,Comparable C2) { if(https://www.wendangku.net/doc/c119069054.html,pareTo(C2)>0) return C1; else return C2; } } public class CompareableCircle exte nds Circle impleme nts Comparable{ //建立个指定半径的圆 CompareableCircle(double radius){ super(radius); } //Comparable 接口的方法public int compareTo(Object o){ if(getArea()>((CompareableCircle)o).getArea()) return 1;

Java实验指导书2013版

第一部份绪论 (2) 本课程实验的作用与任务 (2) 本课程实验的基础知识 (2) 本课程实验教学项目及其教学要求 (2) 第二部份基本实验指导 (4) 实验一:Java基本语法 (4) 实验三:Java面向对象程序设计(一) (9) 实验五:Java常用类 (18) 实验七:Java集合 (21) 实验九:GUI图形用户界面 (26)

第一部份绪论 本课程实验的作用与任务 使学生进一步深刻理解Java语言基本概念、语法规则及程序结构,熟练掌握Java语言程序设计的基本方法,提高利用Java在网络环境下开发、设计应用程序的能力,从而进一步培养学生的创新能力和解决实际问题的能力。 熟悉JDK工具的编程和调试环境;熟练掌握选择和循环结构的程序设计;熟练掌握面向对象的程序设计思想,包括系统类的应用和用户自定义类;充分理解类的三种的特性:封装、继承和多态,特别是通过接口和抽象类理解多态;掌握图形用户界面的设计,特别是事件处理;掌握包的使用;掌握常用的输入输出流类的应用。最后能根据实验的要求认真完成实验报告。 本课程实验的基础知识 Java的基本数据类型包括:byte,short,int,long,double,char。Java的数组属于引用类型的数据,是将相同类型的数据按顺序组成的一种符合数据类型。Java的运算符有算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符,特别要注意它们的优先级。Java的控制语句有if语句、switch语句、for语句、while语句、do-while语句。 类是组成Java程序的基本要素,类有两个重要的成员:成员变量和方法。类是创建对象的模板,类将对象的属性和功能封装为一个整体。成员变量和类变量的区别、实例方法和类方法的区别、方法的重载、成员的访问权限等都是实验课程所依据的重要理论。继承、多态、接口、包及内部类都是Java中非常重要的概念。 Java使用“流”来读写数据。Java的输入输出工作是通过FileInputStream类、FileReader 类、BufferedReader类、ByteArrayInputStream类、ByteArrayOutputStream类等完成的。要想使用Java设计图形用户界面,必须掌握Javax.swing和Java.awt包中的所有容器类和组件类的用法。 本课程实验教学项目及其教学要求

相关文档
相关文档 最新文档