Basics to creating a class in java [closed]

試著忘記壹切 提交于 2019-12-25 18:46:27

问题


This is a simple question, but my AP Comp Sci book just doesn't explain it well enough and you guys are always useful.

What is the basic way of creating a custom class in Java and creating methods within that class, then later calling those methods. I know its simple but I can't find a good explanation anywhere


回答1:


It seems like you need a better understanding of OOP. So, let's create a class and a test client to help you. We will create a class and a test client (or driver) to compute electrical potential. Please note this example is from Introduction to Programming in Java by Robert Sedgewick and Kevin Wayne (an excellent book I highly recommend).

First we create a Charge class:

/*
Separate classes must be in the same directory as main method or must invoke 
classpath
*/
public class Charge {
    // first declare instance variables which are usually private
    private final double rx;
    private final double ry;
    private final double q;

    /* A class contains constructors that are invoked to create objects from a 
    class blueprint. Constructor declarations look like method declarations 
    -except that they use the name of the class and have no return type.  
    Constructors must use the exact name of the class, case sensitive.
    Classes and Constructors are capitalized - methods are camelCase.
    */

    // Constructor
    public Charge(double x0, double y0, double q0) {
        rx = x0;
        ry = y0;
        q = q0;
    }

    /*
    The method to compute electrical potential which is defined by the equation
    V = kq/r
    */
    public double potentialAt(double x, double y) {
        double k = 8.99e09;  // Electrostatic Constant that k=8.99 X 10^9 Nm^2/C^2 (N = Newtons, m = meters, C = Coloumbs)
        // r = delta x - delta y
        double dx = x - rx; // delta x for distance
        double dy = y - ry; // delta y for distance
        return k*q/Math.sqrt(dx*dx + dy*dy); // Computation using distance formula
    }
}

This would be the API to use this class. An important concept in Java programming is that you do not need to know how a data type is implemented to be able to use it.

public class Charge

This is the constructor:

Charge(double x0, double y0, double q0)

These are instance methods. The most important difference between a variable of reference type vs primitive type is that you can use reference type variables to invoke methods that implement data type operations.

double potentialAt(double x, double y)
String toString()

The two parts of using this class would be:

1. Create an object

    ClassName   object   =  new   ClassName (invoke Constructor)
    ---------   ------      ---   ---------  -----------------
    Charge      c        =  new    Charge     (2.2, 3.4, 7.2)

2. Use instance methods on object

    c.potentialAt(2.3, 4.2)

This would be the client (or driver) that could be used with this class:

import java.util.*;

public class ChargeClient {
    public static void main(String[] args) {
        // Using a scanner object to get values
        System.out.println("Please enter an X Value");
        Scanner in = new Scanner(System.in);
        double x = in.nextDouble();
        System.out.println("Please enter a Y Value");
        double y = in.nextDouble();
        /*
        1. Instantiate objects c1 and c2

            ClassName   object   =  new   ClassName (invoke Constructor)
            ---------   ------      ---   ---------  -----------------
            Charge      c        =  new    Charge     (2.2, 3.4, 7.2)

        2. We are invoking constructor from API

            Charge(double x0, double y0, double q0)
        */
        Charge c1 = new Charge(.51, .63, 21.3);
        Charge c2 = new Charge(.13, .94, 81.9);
        // print out charge so we know what we are dealing with
        System.out.println(c1);
        System.out.println(c2);
        /*
        Here we create variables to hold the return from our potential method
        which is enacted on our c1 and c2 objects.  

        1. We call a method on an object by:

            objectName.methodName(appropriate parameters)

        */
        double v1 = c1.potentialAt(x, y);
        double v2 = c2.potentialAt(x, y);
        // Concatenate results and print them out.
        System.out.println(v1 + v2);
        System.out.println("This is the printf statement:");
        System.out.printf("%.2E\n", v1 + v2);
    }
}


来源:https://stackoverflow.com/questions/26676160/basics-to-creating-a-class-in-java

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!