这可以称为封装吗?

时间:2015-03-15 07:21:35

标签: java oop encapsulation

我是封装新手。

我编写了一个简单的java程序,可以识别它是否被赋予奇数或偶数,并且我尝试使用封装。我知道封装使用get和set方法,但我这样做了。

它仍被视为封装吗?

主要

import java.util.Scanner;

public class Implement
{
    public static void main(String[]args)
    {
        Scanner inp = new Scanner(System.in);
        System.out.println("Please enter number: ");
        int ent = inp.nextInt();
        Practice pract = new Practice();
        pract.oddeven(ent);
    }
}

练习课

public class Practice
{
    public void oddeven(int a)
    {
        do
        {
            if(a>=2)
            {
                a-=2;    
            }   
        }
        while(a>1);

        if(a==1)
        {
            System.out.println("This number is Odd.");
        }
        else if(a==0)
        {
            System.out.println("This number is Even.");
        }
    }
}

3 个答案:

答案 0 :(得分:2)

  

它仍被视为封装吗?

你的班级没有内部状态,所以没有内部状态可以隐藏。这意味着“封装”(这完全是为了隐藏内部状态)完全没有实际意义。


我还应该指出:

  • 您的oddeven方法有问题。对于小于零的数字,它不会打印任何内容。

  • 这是一种非常低效的奇数或偶数测试方法。

  • 执行计算并将结果打印到标准输出的方法与执行相同计算并返回它的方法相比,不太有用,灵活且可重复使用

    < / LI>
  • 您的代码中存在许多Java样式违规行为:

    • 您违反了Java标识符的规则。方法名称oddeven应为oddEven,因为“oddeven”不是英文单词。
    • 你的缩进都搞砸了。
    • 您在令牌之间使用空格是错误的。

答案 1 :(得分:0)

封装适用于对象级别,特定于方法和字段。您只需要一个对输入参数起作用的方法,并且与封装无关。

Oracle对数据encapsulation的定义是:“隐藏内部状态并要求通过对象的方法执行所有交互,这被称为数据封装 - 面向对象编程的基本原则。”

答案 2 :(得分:0)

要将其封装在方法中,您必须隐藏发生的事情。这是封装概念的真正本质。这是通过使用两种方法完成的:

Getter:获取主类的值

Setter:在Encapsulation类中设置值(这里使用私有变量)。 以下代码将使用封装显示您的修改:

public class implement
{
    public static void main(String[]args)
    {
        Practice pract = new Practice();
        Scanner inp = new Scanner(System.in);
        System.out.println("Please enter number: ");
        int ent = inp.nextInt();
        pract.setNum(ent);
        if(pract.getNum() == 1){
            System.out.println("This number is Odd");
        }else if (pract.getNum() == 0){
            System.out.println("This is Even");
        }
    }
}

练习课:

public class Practice
    {
        private int x;      

        public int getNum(){
            return x;
        }
        public void setNum(int a){
            x = a;
            do{if(x >= 2)
                x -=2;
            }while(x>1);

        }
    }