Java的实验关于类的使用方法有哪些?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的实验关于类的使用方法有哪些?相关的知识,希望对你有一定的参考价值。

实验目的:掌握继承与组合构造新类的方法。
实验内容:
已知圆由圆心和半径唯一确定,圆心是二维坐标系上的点。编写两个类:Point和Circle,并尝试分别用组合和继承来编写Circle类,实现如下功能:
1)编写适当的构造方法,方便对象的创建。
2)编写属性操作方法(即getXXX和setXXX方法),用于操作成员变量的值。
3)重载Circle的toString方法,达到使用System.out.println(circle)能够输出预定的字符串,如“Point(1.5,2.5),Radius:5.9”等。
试比较继承与组合的区别。
实验要求:
1)编写并调试,提交完整可运行的程序。
2)撰写实验报告(要求实验报告中要包含若干测试数据及测试结果)。

我的回答不是为了分,因为我也初学,想练练。仅仅是个参考。有不明白的加QQ79834037。代码如下:
class Point
private double x; //点的横坐标
private double y; //点的纵坐标

public Point()
x=0;y=0;

public Point(double x,double y)
this.x=x;
this.y=y;

///////////////getXXX和setXXX/////////
public double getX()
return x;

public double getY()
return y;

public void setX(double x)
this.x=x;

public void setY(double y)
this.y=y;

///////////////////////////////////////


class Circle extends Point
private double radius; //圆的半径

public double getRadius()
return radius;

public void setRadius(double radius)
this.radius=radius;

public String toString()
return "Point("+this.getX()+","+this.getY()+"),Radius:"+this.getRadius();



public class test
public static void main(String[] args)
Circle c=new Circle();
c.setX(5.5);
c.setY(4.4);
c.setRadius(6.6);
System.out.println(c.toString());

参考技术A 简单
但是
麻烦
参考技术B 运行起来有问题的样子

关于Java源文件中public类的问题

结论:

一个Java源文件中最多只能有一个public类,当有一个public类时,源文件名必须与之一致,否则无法编译;

如果源文件中没有一个public类,则文件名与类中没有一致性要求;

至于main()不是必须要放在public类中才能运行程序。

 

实验如下:
Test3.java源文件:
class Test1
{
     int i = 1;

}

class Test2
{
     int i = 2;
     public static void main(String[] args)
    {
         System.out.println("main method");
    }
}

C:/javatest>javac Test3.java

C:/javatest>java Test2
main method

注:编译不会出错,注意是运行的Test2 因为没有Test3.class文件生成。如果运行Test3则报错

找不到该类
C:/javatest>java Test3
Exception in thread "main" java.lang.NoClassDefFoundError: Test3
Caused by: java.lang.ClassNotFoundException: Test3
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: Test3.  Program will exit.
这个错误原因很简单:JVM中的类加载器找不到Test3.class ,同时这里也说明了包含main()的类如果想运行则不一定要是public的。

《深入jvm第二版》中有这样一句话:
java虚拟机实例通过调用某个类的main()来运行一个Java程序,而这个main()必须是public static void 并接收一个字符串数组作为参数,任何拥有这样一个main()的类都可以作为java程序的起点。
并没有说拥有main()方法的类一定要是public类。

Test7.java源文件:
class Test5
{
     int i = 1;

}

public class Test6
{
     int i = 2;
     public static void main(String[] args)
    {
          System.out.println("main method");
    }
}

如果运行Test7.java 报错:
C:/javatest>javac Test7.java
Test7.java:8: 类 Test6 是公共的,应在名为 Test6.java 的文件中声明
public class Test6
        ^1 错误
这里说明了文件名必须与public类的类名一致,(如果文件中有public类)

这里可以看出如果有多个public类,那么文件名应该是哪个public类的呢?显然一个java源文件只能有一个public类。

通过上述实验,故能得出开始的结论!

参考:http://blog.csdn.net/bareheadzzq/article/details/6562211









































以上是关于Java的实验关于类的使用方法有哪些?的主要内容,如果未能解决你的问题,请参考以下文章

Java简单实验--关于课后提到的java重载函数的简单分析

关于java工具类的理解 为啥java要提出个工具类的概念,按照面向对象的思想为啥不直接把工具

关于Java源文件中public类的问题

java中类修饰符都有哪些?

有哪些Java web里的并发框架,有哪些?

关于java的this继承多态的理解