基本数据类型的类封装及类的外部访问权限介绍——

基本数据类型的类封装

JAVA:真正意义上的纯面向对象编程语言。

”纯“:体现在程序中的一切都可以用类来描述,甚至连最简单的基本数据类型(如int,char,double,float等)都可以完全用类来取代。

在这里插入图片描述

那么为什么要用包装类呢,使用对应的包装类,对我们有什么好处?
在这里插入图片描述

如何使用基本数据类型对应的类?

  • 基本数据类型名与类名的区别是:首字母是否大小写。类名首字母是大写的。

  • 类对象返回基本数据类型的值:xxx.Value方法。xxx为基本数据类型名。

示例:

Integer a = 4;
Float b = new Float(3.4f);//Float b = 3.4f;
String d = b.toString();//调用包装类对象的toString方法把数值以字符串的形式返回。
float c = b.floatValue();
float e = Float.parseFloat(d);//调用包装类的类方法parseXXX(XXX为包装类类名),将字符串转换为对应基本类型的数值
  • 可以用new运算符创建基本数据类型的包装类,但不建议这么做。因为从JDK9开始,用new创建包装类的对象已经被视为过时了。
  • 建议用一个基本数据类型常量或变量初始化包装类变量即可。上面的第一行代码就是用1个常量4初始化的方法创建了一个内部值为4的Interger对象,并让变量a引用该对象。
  • 其它类型的包装类对象建议都这样创建。

此外,关于包装类的用法,详细大家可以参考java.lang包下面的相应的帮助文档。

类的外部访问权限控制

类的访问权限的控制机制:封装性的表现之一。
在这里插入图片描述

设置合理的外部访问权限,有利于类使用的安全性和方便性。

在类、成员变量和方法声明前加合适的权限控制关键词或不加关键词。

加关键词:

  • public(公开)
  • protected(保护)
  • private(私有)
    在这里插入图片描述
    一个源文件,可以包含多个类,该文件中最多只有一个类可以用public关键字修饰。并且源文件的基本名要和public类的类名相同。
    在这里插入图片描述
  • 此外,3个控制外部访问权限的关键字添加必须放到最前面。例如:
    • public class DemoClass…
    • protected int a;
    • public void doSomething(){…}
  • 不加权限关键字的类,称为友好类。
  • 不加权限关键字的成员,称为友好成员(包括友好数据成员和友好方法成员)

友好:对同一个包中的其他类友好。

某个类声明为友好类:同一个包中的其他类可以访问,对于不在同一个包中的其它类不能访问。

protected成员比友好成员的外部访问权限要多一点,就是继承。子类可以继承protected成员,但是不能继承友好成员。

综上:

  • public最大方
  • protected有的吝啬
  • 友好更吝啬
  • private最自私

例子:

package com.oop.shape;//包的声明语句

public class Triangel {
    protected double sideA;
    protected double sideB;
    protected double sideC;

    public Triangel(double a, double b, double c) throws Exception {
        if (!isValid(a, b, c)) {
            throw new Exception("不能构成三角形!");
        }
        setSide(a, b, c);
    }
    public static boolean isValid(double a, double b, double c) {
        if (a <= 0 || c <= 0)
            return false;
        if (a + b <= c || a + c <= b || b + c <= a)
            return false;
        return true;
    }
    public void setSide(double a,double b,double c)throws Exception{
        if(Triangel.isValid(a,b,c)){
        this.sideA = sideA;
        this.sideB = sideB;
        this.sideC = sideC;
        }
        else
            throw new Exception("不能构成三角形!");
    }
    public double getSideA(){
        return sideA;
    }
    public double getSideB() {
        return sideB;
    }
    public double getSideC() {
        return sideC;
    }
    public double getArea(){
        double s = (sideA+sideB+sideC)/2;
        double res = s*(s-sideA)*(s-sideB)*(s-sideC);
        return Math.sqrt(res);
    }
}

如果不希望用户直接随意更改数据成员的值,就可以将数据成员设为private或protected或友好成员,提供public方法,让用户只能通过方法的调用间接修改数据成员的值。

通过这个例子,我们知道在设置类的外部访问权限时,应站在类的外部用户的角度去思考这样一个问题,设置哪一种权限能够确保用户使类时,既方便又”安全“。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值