Java类和对象:private/public/friendly/封装

封装,就是把数据和对这些数据的操作放在一起,并且用这些操作把数据掩盖起来,是面向对象的基本概念之一,
也是最核心的概念。可以理解为一个鸡蛋,用操作(蛋白)将数据(蛋黄)包围起来,就是封装。

我们有非常直截了当的手段来保证在类的设计的时候做到封装:所有的成员变量必须是private的,这样就避免别人任意使用你的内部数据;所有public的函数,只是用来实现这个类的对象或类自己要提供的服务的,而不是用来直接访问数据的。除非对数据的访问就是这个类及对象的服务。简单说,给每个成员变量提供一对用于读写的get/set函数也是不合适的设计。

private(私有)关键字只能用于成员变量和成员函数。意思是这个成员对这个类是私有的,
只可以让其它成员或对象(main中的对象)在类中访问。出了这个类就禁止访问,对象也无法访问私有成员。
私有(private)是针对类而不是针对对象的,对象之间的私有变量可以互相访问(只要在类的内部)。

public(公开):在成员函数名前面,在本类中还是其它类中都可以访问。
一个.java文件只有一个类的前缀可以是public且这个类的名字要和文件名相同
public的类代表的是这个类是公开的,其它.java文件可以通过import的方式引用。

如果类的成员函数没有前缀(public|private),那么这个成员函数是"friendly"的。
意思是说和这个.java文件位于同一个包的其它类可以访问(包括自己)

//分数的运算
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Fraction a = new Fraction(in.nextInt(), in.nextInt());
        Fraction b = new Fraction(in.nextInt(),in.nextInt());
        a.plus(b).print();
        a.multiply(b).plus(new Fraction(5,6)).print();
        a.print();
        b.print();
        in.close();
    }

}
class Fraction{
    private int fenzi;
    private int fenmu;

    public Fraction(int a, int b){
        this.fenzi = a;
        this.fenmu = b;
    }

    double toDouble(){
        double c=fenzi/fenmu;
        return c;
    }

    Fraction plus(Fraction r){
        int fenzi_new = fenzi*r.fenmu + fenmu*r.fenzi;	//在类中,对象可以相互访问其它对象的私有变量
        int fenmu_new = fenmu*r.fenmu;
        Fraction x = new Fraction(fenzi_new,fenmu_new);
        return x;
    }
	//这两个成员函数就是friendly的
    Fraction multiply(Fraction r){
        int fenzi_new = fenzi*r.fenzi;
        int fenmu_new = fenmu*r.fenmu;
        Fraction x = new Fraction(fenzi_new,fenmu_new);
        return x;
    }

    void print(){
        if(fenzi==fenmu){
            System.out.println(1);
        }else{
            boolean can =false;
            int d = 0;		//最大公约数
            for(int i = fenzi;i>0;i--){
                if(fenzi%i==0&&fenmu%i==0){
                    d = i;
                    break;
                }
            }
            if(d==1){
                System.out.println(fenzi+"/"+fenmu);
            }else{
                fenzi/=d;
                fenmu/=d;
                System.out.println(fenzi+"/"+fenmu);
            }
        }
    }
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值