首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    面向对象的Java实现

    1-1:封装 a.为什么需要封装(封装可以是数据方便维护、增加实用性、方便扩展等等。通过面向对象的思想,模拟现实生活中的事物。) b.什么是封装(封装就是将属性私有化,提供共有的方法访问私有属性) c.如何实现封装 例如: package s2java.sg.ch01; public class AccpTeacher3{ private String name;//教员姓名 private int age;//年龄 public String getName(){ return name; } public void setName(String MyName){ name=MyName; } public int getAge(){ return age; } public void setAge(int age){ if(age<22){ System.out.println("错误!最小年龄应为22岁!"); this.age=22;//若果不符合年龄要求,则赋予默认值 }else{ this.age=age; } } /* *返回自我介绍的内容 */ public String introduction(){ return "大家好!我是"+name+",我今年"+age+"岁"; } } 1-2:构造方法 a.为什么需要构造方法(使用构造方法可以给属性赋值。而且,实例化一个对象实际上就是去调用这个对象的构造方法。) b.什么是构造方法(构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值。) 构造方法必须满足以下语法规则:方法名与类名相同和没有返回类型。或者会所二名同、无返型。 c.带参数的构造方法(带参数的构造方法可以在构造方法中传递参数。) 在使用带参数的构造方法示例化对象时,传递的值和构造方法的参数应当在个数、次序和类型上互相匹配。 例如:AccpTeacher6 teacher=new AccpTeacher6("李名",23,"本科","咨询师"); 通过调用带参数的构造方法,在创建对象时,一并完成了对象成员的初始化工作,简化了对象初始化的代码。 1-3:方法重载 a.生活中的方法重载 例如: 一个司机可以驾驶不同的车子,虽然驾驶的行为实现各不相同,但是这些 操作都称为驾驶。驾驶这一行为就构成了生活中的方法重载。 b.方法重载的代码示例 例如: public static int max(int a,int b) public static int max(long a,long b) public static int max(float a,foat b) public static int max(double a,double b) 多次调用Math类的max()方法,分别进行不同的取最大值的操作。 例如: public class Test{ public static void main(String[] args){ Math.max(1,2); Math.max(1.0F,2.F); Math.max(1.0,2); } } c.构造方法重载(构造方法重载是方法重载的一个典型特例) 例如: package s2Java.sg.ch02; public class AccpTeacher7{ private String name;//教员姓名 private String school="北京中心";//所在中心 public AccpTeacher7(String name){ this.name=name;//设定教员姓名 } public AccpTeacher7(String name,String school){ this.name=name;//设定教员姓名 this.school=school;//设定教员的所在中心 } public String introduction(){ return "大家好!我是"+school+"的"+name; } } 例如: package s2java.sg.ch01; public class AccpTeacher7Test{ public static void main(String[] args){ AccpTeacher7 teacher1=new AccpTeacher7("李明"); System.out.println(teacher1.introduction()); AccpTeacher

    01

    SAP FI-CO总账科目简析

    浅谈SAP FICO—总账科目 一、总账科目的概述 总账科目,它起到统驭整个财务的作用。不同的会计科目在总账主数据中创建会应用到不同的“字段”(field),通过这些不同“字段”的组合,就会形成系统能够识别并能够为我们现行会计核算所接受的会计科目。 总帐科目主记录分为两部分: Ø 关于会计科目表的数据。这部分数据用于整个主记录,如总帐科目号码,科目名称,确定科目是资产负债表科目还是损益表科目。此外,用户还可以用它来规定主记录中用于公司代码部分的数据的有关控制信息,如科目组和屏幕格式。 Ø 关于公司代码的数据。这部分数据包含了如何控制业务数据的输入与记帐的参数,如何管理科目的数据,以及其他与公司代码相关的数据,如货币、税码、统驭科目、行项目的显示和未清项的管理等。 其实,这两部分也构成了SAP的总账科目的两个层次,也是SAP区别于其他ERP厂商的一个重要特征。 在 SAP 中,会计科目的定义分为两层:科目表层和公司代码层。比如:一个集团企业可以定义一套会计科目表,但是下面的每个公司代码,从中选择哪些科目,这些科目的各项参数又是可以自己决定的,从而达到集中和灵活兼顾的效果。 SAP的科目类别分为三大类别:资产负债类(BSA)、损益类(PLA)、统驭类(RAA),其中常见的字段状态变式(field status variant)为:一般资产负债科目(GBS)、材料采购GR/IR(MMA)、一般费用科目(EXP)、收入科目(REV)、统驭科目AR/AP(RAA)。

    01

    Hadoop Authentication

    我被被派去做别的事情了,所以与Hadoop相关的工作就只能搁下。写篇总结,把最近遇到的和kerberos相关的东西列一下。 JAAS是Java 认证和授权服务(Java Authentication and Authorization Service)的缩写,是PAM框架的Java实现。 javax.sercurity.auth.Subject是一个不可继承的实体类,它表示单个实体的一组相关信息,与请求的来源相关。 javax.security.auth.Principal是一个接口,表示带有不同类型凭证的标识,基本上来说,Principal可以是任意对象。 JAAS的授权机制主要就是围绕着Subject和Principal。关于JAAS比较详细的参考是这里:http://docs.oracle.com/javase/6/docs/technotes/guides/security/jaas/JAASRefGuide.html 几个比较重要的java属性: java.security.krb5.realm java.security.krb5.kdc java.security.krb5.conf hadoop的身份认证和授权都是建立在JAAS之上。 hadoop.security.authentication属性有2种值: simple: Security is disabled。 kerberos: Security is enabled。 org.apache.hadoop.security.UserGroupInformation有一个静态方法:getCurrentUser()。它会返回一个UserGroupInformation类的实例(以下简称UGI)。如果subject为空,或者这个subject中与org.apache.hadoop.security.User对应的Principal为空,那么说明尚未登录过,调用getLoginUser()创建UserGroupInformation的实例。 getLoginUser()的流程: 1.创建LoginContext: name:如果hadoop.security.authentication等于”kerberos”,那么是“hadoop-user-kerberos”或者“hadoop-keytab-kerberos”,否则是“hadoop-simple”。它的主要作用是作为appName传递给UserGroupInformation.HadoopConfiguration.getAppConfigurationEntry(String appName)方法。 subject: callbackHandler: 空 Configuration: UserGroupInformation.HadoopConfiguration的实例。 2.login.login(); 这个会调用HadoopLoginModule的login()和commit()方法。 HadoopLoginModule的login()方法是一个空函数,只打印了一行调试日志 LOG.debug("hadoop login"); commit()方法负责把Principal添加到Subject中。 此时一个首要问题是username是什么? 在使用了kerberos的情况下,从javax.security.auth.kerberos.KerberosPrincipal的实例获取username。 在未使用kerberos的情况下,优先读取HADOOP_USER_NAME这个系统环境变量,如果不为空,那么拿它作username。否则,读取HADOOP_USER_NAME这个java环境变量。否则,从com.sun.security.auth.NTUserPrincipal或者com.sun.security.auth.UnixPrincipal的实例获取username。 如果以上尝试都失败,那么抛出异常LoginException("Can’t find user name")。 最终拿username构造org.apache.hadoop.security.User的实例添加到Subject中。 测试登录: HADOOP_JAAS_DEBUG=true HADOOP_ROOT_LOGGER=DEBUG,console  bin/hadoop  org.apache.hadoop.security.UserGroupInformation 其中,UGI应该是这样的形式: UGI: host/xx.xx.xx.com@xx.xx.com (auth:KERBEROS)

    01

    SAP最佳业务实践:FI–资产会计(162)-15在建工程-F-54清算预付款

    4.6.5 F-54清算预付款 既可以手动清算预付款,也可以由付款程序来清算。您可以随时进行手动清算。不需要任何特殊方法。 当您输入发票时,系统会发出有未清预付款的警告消息。为此,系统指出存在预付款承诺。您可以立即决定是否要清算该预付款。不过,此消息与您的系统配置相关。您可以指定是否指出预付款。可为每个特殊总分类帐标识做出此说明。标准系统中为所有预付款类型提供了此选项。 如果要付款程序清算预付款,则必须在为付款程序定义公司代码说明时指定特殊总分类帐标识。如果这样做了,系统会在您输入预付款时自动设置付款冻结。

    08
    领券