我对Java中的类和对象的概念感到困惑 我做了以下代码,但我不确定它是否正确! 那么如何测试它并在主类中调用这个类呢?
import java.util.*;
public class Pizza {
public String pizzasize;
public int cheese;
public int pepperoni;
public Pizza (String pizzasize1,int cheese1,int pepperoni1){
pizzasize= pizzasize1;
cheese=cheese1;
pepperoni=pepperoni1;
}
这种方法小鸡披萨大小然后声明和分配披萨成本
public void setPizza(String pizzasize1){
switch(pizzasize1)
{
case "S":
case "s":
{
int pc=10;break;
}
case "M":
case "m":
{
int pc=12;break;
}
case "L":
case "l":
{
int pc=14;break;
}
default:System.out.print("Wrong");
}//switch
pizzasize= pizzasize1;
}
...
public void setPizza(int cheese1,int pepperoni1){
cheese=cheese1;
pepperoni=pepperoni1;
}
public String getPizza(){
return pizzasize;
}
public int getPizza1(){
return cheese;
}
public int getPizza2(){
return pepperoni;
}
public void calcCost (int pc){
double totalCost = pc+(cheese+pepperoni) *2;
}
最后这个样本输出方法
public void getDiscriptions(String pizzasize,int cheese,int pepperoni,double totalCost){
Scanner sc=new Scanner(System.in);
System.out.println("place order");
System.out.println("size: L,M,s");
pizzasize=sc.next();
System.out.println("cheese: ");
cheese=sc.nextInt();
System.out.println("pepperoni: ");
pepperoni=sc.nextInt();
System.out.println("");
System.out.println("your order placed is/nlarge pizza with"+cheese+"cheese,"
+pepperoni+"pepperoni,/ntotal cost is"+totalCost);
}
}//
答案 0 :(得分:1)
你已经将你的例子分成了几个块。似乎所有这些方法都应该在同一个Pizza
类中。这是真的吗?
这些方法看起来像属于命令行应用程序。如果是这种情况,您将需要main(...)
方法。
class Pizza {
...the methods you want to test go here...
public static void main(String[] args) {
...your top-level test code goes here...
}
}
首先你必须编译它。如果您有命令提示符,并且安装了JDK,则可以键入:
$ javac Pizza.java
然后,如果编译器没有给出错误消息,您可以运行它:
$ java Pizza
请参阅@PetterFriberg提供的链接以获取更多信息。
如果要在集成开发环境(IDE)(如Eclipse或IntelliJ)中运行它,那么这就是另一个问题。
答案 1 :(得分:1)
假设您是汽车工程师并且您获得了建造新型号汽车的合同,那么您将对建造的汽车做些什么?
我想,首先你将收集有关的信息:
New brand name
,Size
,Shape
,Weight
,Color
等。
Speed
,Acceleration
,Rotation
等。
之后,您将开始设计汽车的蓝图。蓝图仅显示其工作原理和外观。但是你永远无法用这个蓝图在现实世界中感受到它。
要感受汽车,您必须使用蓝图中提到的相同功能构建汽车。只有在那之后你才能触摸它,打开门,骑它,按下制动器和加速器。使用相同的蓝图,您可以根据需要随意构建汽车。
在OOP中,Class
与汽车蓝图相同。它只显示汽车知道的内容:color
,size
,weight
,height
,speed
这些都称为属性。它只会告诉您汽车的行为:runs
,stops
,rotates
等,这些都称为方法。在现实世界中,类并不存在,它是虚拟的。
class Car_Real {
String brand_name;
String color;
float weight;
float height;
void runs() {
System.out.println("Engine starts");
}
void accelerates() {
System.out.println("Speed goes on increasing");
}
void brakes(){
System.out.println("Speed goes on decreasing");
}
}
在OOP中,对象是从蓝图派生的真车。在创建对象后,您可以访问门,您可以骑它,这意味着您可以感受和访问类的属性和方法。
public class Car {
public static void main(String[] args) {
Car_Real C1=new Car_Real(); //create object C1 from car
C1.runs();
}
}
使用相同的类,您可以根据需要创建任意数量的对象。
public class Car {
public static void main(String[] args) {
Car_Real C1 = new Car_Real();
Car_Real C2 = new Car_Real();
C1.runs();
C2.brakes(); // create two object C1, C2
}
}
答案 2 :(得分:0)
不错,但有几点指示:
Operator
语句不适用于字符串,它们与switch
,byte
,short
和char
原始数据类型一起使用。它们也适用于枚举类型。
您可以设置尺寸为
的枚举int
然后,您的尺寸字段将为public enum Size {S,M,L};
类型
Size
将您的字段设为private Size pizzaSize;
而不是private
。这意味着他们不能从Pizza课外看到。可以使用getter方法读取它们。如果需要更改它们,您也可以提供setter方法。
示例:
public
为清楚起见,我省略了其他字段。另请注意,getter和setter方法与字段名称匹配,前缀为public class Pizza {
//cannot be accessed directly from other classes
private int cheese;
//allows other classes to read the value, but not change it
public int getCheese() {
return cheese;
}
//provide a setter like this if you want other classes to be able to change the value.
public void setCheese(int cheese) {
this.cheese = cheese;
}
}
和get
,字段的首字母大写。编译器不需要这个,但它是公认的惯例和良好实践。