为什么不应用我的私人修饰符?

时间:2020-09-07 11:35:08

标签: private public modifier

因此,我一直在阅读在线教程,并将其分为公共和私人课程。我理解它,但是在学习本教程时,我遇到了一个问题,我要么无法运行该程序,因为它不允许我使用非静态类,或者我使用静态类运行它,而我的私有变量仍然可以在主要方法中进行更改。作为参考,我包括了我的代码的静态版本以及我所引用的视频。

https://www.youtube.com/watch?v=psL2NHg8eQs&list=PLnVYEpTNGNtVVLAa3GH_jPLoNLFBjYkHz&index=23

import java.util.Scanner;
import java.text.Format;
public class Tutorial13 {
    public static void main(String[] args){
        Scanner input= new Scanner(System.in);
        //creating new objects with constructors
        //start with class, then the name of the object, then new followed by the values required by the constructor.
        aircraft Cessna172 = new aircraft(4,140,56.5,9.5);
        aircraft PiperSaratoga = new aircraft(6,201,102.5,20.5);

        //create a few objects of cars
        car Corvette = new car(2,184,18.5,4.6);
        car HondaFit = new car(5,115,10.6,2.8);

        //Display vehicle info
        System.out.println("Vehicle info:");
        System.out.println("-------------------------------------------------------------");
        System.out.println("Cessna172");
        Cessna172.info();
        System.out.println("Piper Saratoga");
        PiperSaratoga.info();
        System.out.println("Corvette");
        Corvette.info();
        System.out.println("Honda Fit");
        HondaFit.info();
        System.out.println("-------------------------------------------------------------");

        System.out.println("Tests");

        System.out.println("The Cessna 172 can fly for " + Cessna172.aircraftEndurance()+ " hours");
        System.out.println("Piper Saratoga can fly for " + PiperSaratoga.aircraftEndurance()+ " hours");
        System.out.println("The Corvette can drive for " + Corvette.carEndurance()+ " hours");
        System.out.println("The Honda Fit can drive for " + HondaFit.carEndurance()+ " hours");
        System.out.println("If you flew the Cessna 172 for 2.5 hours, it would take " + Cessna172.fuelNeeded(2.5)+ " gallons of fuel.");
        System.out.println("If you drove the Corvette for 2.5 hours, it would take "+ Corvette.fuelNeeded(2.5)+ " gallons of fuel.");

        **//Change the value of the number of passengers to 10
        //This should not work because it is set to private (But it still does, not sure why)
        Cessna172.setPassengers(50);
        System.out.println("Cessna 172 now contains " +Cessna172.passengers+ " passengers.");**


    }
    //without the phrase public or static, Java applies the public modifier by default
    //When you add the private modifier, only methods and code within the designated class can change the code.


    static class aircraft{
        **private int passengers, cruiseSpeed;
        private double  fuelCapacity, fuelBurnRate;**

        //constructor
        aircraft(int p, int c, double fc, double fbr){
            passengers= p;
            cruiseSpeed= c;
            fuelCapacity= fc;
            fuelBurnRate= fbr;
        }

        //method to calculate Endurance
        double aircraftEndurance(){
            double endurance = fuelCapacity/fuelBurnRate;
            return endurance;
        }
        //Method to determine how much fuel is required to use this vehicle for a set period of time.
        double fuelNeeded(double time){
            return fuelBurnRate/time;
        }
        void info(){
            System.out.println("-------------------------------------------------------------");
            System.out.println("# of passengers\tspeed\tfuel cap.\t\tfuel burn rate");
            System.out.println(passengers+" passengers\t"+cruiseSpeed+"mph\t"+fuelCapacity+" Gallons\t"+fuelBurnRate+" Gallons per hour");
            System.out.println("-------------------------------------------------------------");
        }
        //By doing this within the class, this method will be the only way to change the private value of the passengers Data.
        void setPassengers(int p){
            if((p>0)&&(p<=10)){
                passengers = p;
                System.out.println("Revised passenger count: " + passengers);
            }
            else System.out.println("Error setting passengers.");
        }

    }
    static class car{
        **private int passengers, cruiseSpeed;
        private double  fuelCapacity, fuelBurnRate;**
        car(int p, int c, double fc, double fbr){
            passengers=p;
            cruiseSpeed=c;
            fuelCapacity = fc;
            fuelBurnRate = fbr;
        }
        double carEndurance(){
            double endurance = fuelCapacity/fuelBurnRate;
            return endurance;
        }
        double fuelNeeded(double time){
            return fuelBurnRate/time;
        }
        void info(){
            System.out.println("-------------------------------------------------------------");
            System.out.println("# of passengers\tspeed\tfuel cap.\t\tfuel burn rate");
            System.out.println(passengers+" passengers\t"+cruiseSpeed+"mph\t"+fuelCapacity+" Gallons\t"+fuelBurnRate+" Gallons per hour");
            System.out.println("-------------------------------------------------------------");
        }
        void setPassengers(int p){
            if((p>0)&&(p<=10)){
                passengers = p;
                System.out.println("Revised passenger count: "+ passengers);
            }
            else System.out.println("Error setting passengers.");
        }
    }

}

0 个答案:

没有答案