实验项目名称 : 继承和多态
(所属课程: Java语言程序设计 )
院 系:计算机科学与信息工程 专业班级:12级物联网工程 姓 名:张 懿
学号:201203040042 实验地点: A-06 411 指导老师:张 阳
本实验项目成绩: 教师签字: 日期:
1.实验目的
(1)掌握类的继承机制。
(2)熟悉类中成员变量和方法的访问控制。
(3)熟悉方法或构造方法多态性。
2.实验内容
(1)模拟编写程序,理解类的继承、多态、继承和多态规则。
(2)独立编程,实现类的继承和多态。
3.实验作业
设计一个类Shape(图形)包含求面积和周长的area()方法和perimeter()方法以及设置颜色的方法SetColor(),并利用Java多态技术设计其子类Circle(圆形)类、Rectangle(矩形)类和Triangle(三角形)类,并分别实现相应的求面积和求周长的方法。每个类都要覆盖toString方法。
海伦公式:三角形的面积等于s(s-a)(s-b)(s-c)的开方,其中s=(a+b+c)/2
4.实验程序
import java.util.Scanner;
public class TEST {
public static void main(String[] args) {
float radius;
float chang,kuan;
float a,b,c;
Scanner input = new Scanner(System.in);
System.out.print("请输入圆的半径:");
radius = input.nextFloat();
Circle circle = new Circle(radius);
System.out.println("圆的面积为:"+circle.area()+" 圆的周长为:"+circle.perimeter()+"\n"+circle.toString());
System.out.print("请输入矩形的长:");
chang = input.nextFloat();
System.out.print("请输入矩形的宽:");
kuan = input.nextFloat();
Rectangle rectangle = new Rectangle(chang,kuan);
System.out.println("矩形的面积为:"+rectangle.area()+" 矩形圆的周长为:"+rectangle.perimeter()+"\n"+rectangle.toString());
System.out.print("请输入三角形的第一条边:");
a = input.nextFloat();
System.out.print("请输入三角形的第二条边:");
b = input.nextFloat();
System.out.print("请输入三角形的第三条边:");
c = input.nextFloat();
Triangle triangle = new Triangle(a,b,c);
System.out.println("三角形的面积为:"+triangle.area()+" 三角形圆的周长为:"+triangle.perimeter()+"\n"+triangle.toString());
}
}
class Shape{
private String color;
public Shape(){
}
public double area(){
return 0;
}
public double perimeter(){
return 0;
}
public void Setcolor(String color){
this.color = color;
}
}
class Circle extends Shape{
private float radius;
public Circle(float radius){
this.radius = radius;
}
public double area(){
return 3.14 * radius * radius;
}
public double perimeter(){
return 3.14 * 2 * radius;
}
public String toString(){
return super.toString() + "这是一个描述该对象的字符串 ";
}
}
class Rectangle extends Shape{
private float chang;
private float kuan;
public Rectangle(float chang,float kuan){
this.chang = chang;
this.kuan = kuan;
}
public double area(){
return chang * kuan;
}
public double perimeter(){
return (chang+kuan) * 2;
}
public String toString(){
return super.toString() + "这是一个描述该对象的字符串 ";
}
}
class Triangle extends Shape{
private float a;
private float b;
private float c;
public Triangle(float a,float b,float c){
this.a = a;
this.b = b;
this.c = c;
}
public double area(){
float s = (a+b+c)/2;
return Math.sqrt(s * (s-a) * (s-b) * (s-c));
}
public double perimeter(){
return a+b+c;
}
public String toString(){
return super.toString() + "这是一个描述该对象的字符串 ";
}
}
程序输出结果:
:
5.实验总结
(1)掌握了类的继承机制。
(2)熟悉了类中成员变量和方法的访问控制。
(3)熟悉了方法和构造方法多态性。
第二篇:Java编程基础实验报告(样本)
实验名称: Java 开发工具与简单Java程序设计 指导教师:
实验仪器: 计算机
实验日期: 年 月 日 实验地点: 成绩:
实验目的:
(1)熟悉JDK开发环境。
(2)掌握Java Application的程序结构和开发过程。
(3)了解Java Applet的功能与程序结构。
实验内容及基本要求:
1、运行下列程序,写出其输出结果。
public class Hello
{
public static void main(String args[])
{
System.out.println(“你好,很高兴学习Java”);
}
}
2、运行下列程序,写出其输出结果。
import java.applet.*;
import java.awt.*;
public class boy extends Applet
{
public void paint(Graphics g)
{
g.setColor(Color.red);
g.drawString(“Java是跨平台的语言,一次编译,到处运行。”,2,30);
g.setColor(Color.blue);
g.drawString(“我学得很认真”,10,50);
}
}
3、分别用应用程序和小应用程序编程,要求输出字符串“我喜欢学习Java。”
实验过程及结果:
1、 F:\java\sy>javac Hello.java
F:\java\sy>java Hello
你好,很高兴学习Java
F:\java\sy>
2、编写一个超文本文件boy.html:
<applet code=boy.class height=100 width=300>
</applet>
方法一:F:\java\sy>appletviewer boy.html
方法二:在IE浏览器中直接打开文件boy.html
3、应用程序:
public class Hello1
{
public static void main(String args[])
{
System.out.println(“我喜欢学习Java”);
}
}
小应用程序:
import java.applet.*;
import java.awt.*;
public class boy1 extends Applet
{
public void paint(Graphics g)
{
g.setColor(Color.red);
g.drawString(“我喜欢学习Java”,2,30);
}
}
实验总结:
实验评价(教师):
实验名称:Java语言基础 指导教师:
实验仪器: 计算机
实验日期: 年 月 日 实验地点: 成绩:
实验目的:
(1)掌握标识符的定义规则。
(2)掌握各种基本数据类型及其相互转换。
(3)掌握各种运算符的实验及其优先级控制。
(4)掌握Java的控制语句和循环语句。
实验内容及基本要求:
l、上机运行下列程序,写出其输出结果。
public class Convert
{
public static void main(String args[])
{
byte a=120; short b=255;
int c=2200; long d=8000;
float f;
double g=123456789.123456789;
b=a;
c=(int)d;
f=(float)g;
System.out.print(“a=”+a); System.out.println(“b=”+b);
System.out.print(“c=”+c); System.out.println(“d=”+d);
System.out.print(“f=”+f); System.out.println(“g=”+g);
}
}
2、上机运行下列程序,写出其输出结果。
import java.applet.*;
import java.awt.*;
public class JieCheng extends Applet
{
public void paint(Graphics g)
{
long jiecheng=1;
for(int i=10;i>=1;i--)
{
jiecheng=jiecheng*i;
}
g.drawString(“10的阶乘是”+jiecheng,10,20);
}
}
3、编写一个程序,根据月份判断季节。
实验过程及结果:
1、a=120b=120
c=8000d=8000
f=1.23456792E8g=1.2345678912345679E8
2、编写一个超文本文件jiecheng.html:
<applet code=JieCheng.class height=100 width=300>
</applet>
方法一:F:\java\sy>appletviewer jiecheng.html
方法二:在IE浏览器中直接打开文件jiecheng.html
3、import java.util.*;
public class JiJie{
public static void main(String args[]){
int month;
String jijie="";
System.out.println("请输入月份:");
Scanner reader=new Scanner(System.in);
month=reader.nextInt();
switch(month){
case 1:
case 2:
case 3:
jijie="春季";
break;
case 4:
case 5:
case 6:
jijie="夏季";
break;
case 7:
case 8:
case 9:
jijie="秋季";
break;
case 10:
case 11:
case 12:
jijie="冬季";
break;
}
System.out.println("月份"+month+"属于"+jijie);
}
}
实验总结:
实验评价(教师):
实验名称: Java面向对象程序设计 指导教师:
实验仪器: 计算机
实验日期: 年 月 日 实验地点: 成绩:
实验目的:
(1)掌握类的声明,对象的创建以及方法的定义和调用。
(2)掌握打包机制。
(3)掌握类的继承。
(4)掌握类接口的使用。
实验内容及基本要求:
1、 编写程序runYear.java实现从屏幕输出1900年到20##年之间的所有润年。
2、 编写程序jsarea.java实现对三角形面积的计算,要求使用方法调用。
3、 运行下列程序,并写出其输出结果。
interface ShowMessage
{
void 显示商标(String s);
}
class TV implements ShowMessage
{
public void 显示商标(String s)
{
System.out.println(s);
}
}
class PC implements ShowMessage
{
public void 显示商标(String s)
{
System.out.println(s);
}
}
public class Example
{
public static void main(String args[])
{
ShowMessage sm;
sm=new TV();
sm.显示商标(“长城牌电视机”);
sm=new PC();
sm.显示商标(“联想奔月 5008PC”);
}
}
实验过程及结果:
1、public class runYear {
public static void main(String[] args){
System.out.println("1900年到20##年之间的所有润年有:");
int year;
for(year=1900;year<=2000;year++)
{
final int a = 4;
final int b = 100;
final int c = 400;
double x = year%a;//计算能否被4整除
double y = year%b;//计算能否被100整除
double z = year%c;//计算能否被400整除
if(x == 0 && y != 0 || z == 0){
System.out.print(year+" " );
}
}
}
}
2、
import java.util.*;
class area{
float area(float x,float h){
{float s;
s=(x*h)/2;
return s;
}
}
}
public class jsarea{
public static void main(String args[]){
area a=new area();
System.out.println("请输入三角形的底长和高:");
Scanner reader=new Scanner(System.in);
float x1,h1;
x1=reader.nextFloat();
h1=reader.nextFloat();
float s=a.area(x1,h1);
System.out.println("该三角形的面积是:"+s);
}
}
3、F:\java\sy>java Example
长城牌电视机
联想奔月 5008PC
实验总结:
实验评价(教师):
实验名称: 图形用户界面设计实验一 指导教师:
实验仪器: 计算机
实验日期: 年 月 日 实验地点: 成绩:
实验目的:
(1)理解AWT和Swing组件的异同。
(2)理解并掌握常见容器的含义及应用。
(3)理解并掌握常见布局的含义和应用。
实验内容及基本要求:
1、编写程序包含一个标签、一个文本框和一个按钮,当用户单击按钮时,程序把文本框中的内容复制到标签中。
2、设计一个加法器,如下图所示,在文本框中输入两个整数,单击“=”按钮时,在第三个文本框中显示这两个数的和。
实验过程及结果:
1、
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class fuzhi {
public static void main(String args[]) {
frame f = new frame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
class frame extends JFrame {
JTextField num1;
JLabel lab1;
JButton but1;
String s;
public frame() {
setTitle("复制内容");
setBounds(300, 300, 440, 100);
num1 = new JTextField(30);
lab1 = new JLabel("初始状态");
but1 = new JButton("复制");
JPanel jpanel = new JPanel();
jpanel.setLayout(new FlowLayout( ));
jpanel.add(num1);
jpanel.add(but1);
jpanel.add(lab1);
Container c = getContentPane();
c.add(jpanel);
but1.addActionListener(new action1());
}
class action1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
s = new String(num1.getText());
lab1.setText(s);
}
}
}
2、
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Oneandtwo {
public static void main(String args[]) {
frame f = new frame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
f.setResizable(false);
}
}
class frame extends JFrame {
JTextField num1, num2, num3;
int sum;
String s;
public frame() {
setTitle("加法");
//setSize(220, 50);
setBounds(300, 300, 440, 100);
num1 = new JTextField(10);
num2 = new JTextField(10);
num3 = new JTextField(10);
JLabel plus = new JLabel("+");
JButton equal = new JButton("=");
JPanel jpanel = new JPanel();
jpanel.setLayout(new GridLayout(1, 5));
jpanel.add(num1);
jpanel.add(plus);
jpanel.add(num2);
jpanel.add(equal);
jpanel.add(num3);
Container c = getContentPane();
c.add(jpanel);
equal.addActionListener(new action1());
}
class action1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
int n1 = Integer.parseInt(num1.getText().trim());
int n2 = Integer.parseInt(num2.getText().trim());
sum = n1 + n2;
s = new String("" + sum);
num3.setText(s);
}
}
}
实验总结:
实验评价(教师):
实验名称: 图形用户界面设计实验二 指导教师:
实验仪器: 计算机
实验日期: 年 月 日 实验地点: 成绩:
实验目的:
(1)理解事件处理的委托事件模型。
(2)理解并掌握键盘和鼠标等事件的处理。
(3)理解并掌握常见组件的使用和事件处理。
实验内容及基本要求:
1、 创建一个窗体,窗体中有一个按钮,当单击按钮后,就会弹出一个新窗体。
2、 创建一个菜单,如下图所示。要求在单击菜单子项时,弹出一个窗口显示“该项目正在建设中……”。
实验过程及结果:
1、
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class chuangti2 {
public static void main(String args[]) {
fram f1 = new fram();
}}
class fram extends JFrame{
public fram(){
JFrame mw = new JFrame("第一个窗体");
mw.setSize(550,500);
Container cp=mw.getContentPane();
cp.setLayout(new FlowLayout());
JButton button = new JButton("按钮");
button.addActionListener(new action1());
cp.add(button);
mw.setVisible(true);
mw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
class action1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
JFrame f2=new JFrame("第二个窗体");
f2.setSize(300,300) ;
f2.setVisible(true);}
}
}
2、
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Caidan extends Frame implements ActionListener {
TextField text;
public Caidan() {
super("我的菜单窗口");
setSize(300, 200);
}
public void init() {
MenuBar myB = new MenuBar();
setMenuBar(myB);//窗体类Frame的方法,设置菜单
Menu m1 = new Menu("文件");//创建"文件"菜单
m1.add(new MenuItem("打开"));//在菜单m1中添加菜单项"打开"
MenuItem m11 = new MenuItem("保存");
m11.setEnabled(false);//设置菜单项m11为不可用状态
m1.add(m11);
m1.addSeparator();//在菜单中添加一条分割线
m1.add("退出");
m1.addActionListener(this);//添加监视器,设置菜单项接收操作事件
myB.add(m1);
Menu m2 = new Menu("编辑");
m2.add("复制");
Menu m21 = new Menu("颜色");
m21.add("前景色");
m21.add("背景色");
m21.addActionListener(this);
m2.add(m21);
m2.addSeparator();
CheckboxMenuItem mycmi = new CheckboxMenuItem("全选");
m2.add(mycmi);
m2.addActionListener(this);
myB.add(m2);
Menu m3 = new Menu("帮助");
m3.add("关于");
m3.addActionListener(this);
myB.setHelpMenu(m3);
}
public static void main(String args[]) {
Caidan myMenu = new Caidan();
myMenu.init();
myMenu.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand() == "前景色"){
JOptionPane.showMessageDialog(null, "该项目正在建设中!","注意",
JOptionPane.ERROR_MESSAGE);
}
if (e.getActionCommand() == "退出"){
System.exit(0);}
}
}
实验总结:
实验评价(教师):