Java运用类抽取封装的例子
类的分装实验报告

一、实验目的1. 理解封装的概念及其在面向对象编程中的重要性。
2. 掌握如何使用Java语言实现类的封装。
3. 学会使用访问控制符(public、private、protected)来控制成员的访问权限。
4. 理解静态成员和实例成员的区别。
二、实验环境1. 操作系统:Windows 102. 开发工具:Eclipse IDE3. 编程语言:Java三、实验内容1. 创建一个名为“Person”的类,包含以下成员变量:- private String name; // 姓名- private int age; // 年龄- private String id; // 身份证号2. 创建一个名为“Person”的类,包含以下成员方法:- public String getName(); // 获取姓名- public void setName(String name); // 设置姓名- public int getAge(); // 获取年龄- public void setAge(int age); // 设置年龄- public String getId(); // 获取身份证号- public void setId(String id); // 设置身份证号3. 在主类“Main”中,创建一个“Person”对象,并通过访问控制符进行封装测试。
四、实验步骤1. 打开Eclipse IDE,创建一个名为“Experiment”的Java项目。
2. 在“Experiment”项目中,创建一个名为“Person”的类。
3. 在“Person”类中,定义成员变量name、age和id,并使用private关键字进行封装。
4. 在“Person”类中,定义成员方法getName、setName、getAge、setAge、getId和setId,并使用public关键字暴露给外部。
5. 在主类“Main”中,创建一个“Person”对象,并调用其成员方法进行测试。
java语言中封装类代码示例

java语⾔中封装类代码⽰例在⾯向对象程序设计⽅法中,封装(Encapsulation)是指⼀种将抽象性函式接⼝的实现细节部分包装‘隐藏起来的⽅法。
数据被保护在内部,隐藏内部实现细节,对外提供接⼝与外部交互。
使⽤封装的步骤将类的所有属性使⽤关键字private去修饰,把它们变成私有的,不允许外部类直接访问⽣成或者提供公共的setter/getter⽅法去操作这些被隐藏起来的属性在类⾃⼰的 setter/getter⽅法中加⼊逻辑控制,以确保数据访问的有效性和安全性实例让我们来看⼀个java封装类的例⼦:/* ⽂件名: EncapTest.java */public class EncapTest{private String name;private String idNum;private int age;public int getAge(){return age;}public String getName(){return name;}public String getIdNum(){return idNum;}public void setAge( int newAge){age = newAge;}public void setName(String newName){name = newName;}public void setIdNum( String newId){idNum = newId;}}以上实例中public⽅法是外部类访问该类成员变量的⼊⼝。
通常情况下,这些⽅法被称为getter和setter⽅法。
因此,任何要访问类中私有成员变量的类都要通过这些getter和setter⽅法。
通过如下的例⼦说明EncapTest类的变量怎样被访问:/* F⽂件名 : RunEncap.java */public class RunEncap{public static void main(String args[]){EncapTest encap = new EncapTest();encap.setName("James");encap.setAge(20);encap.setIdNum("12343ms");System.out.print("Name : " + encap.getName()+" Age : "+ encap.getAge());}}以上代码编译运⾏结果如下:Name : James Age : 20使⽤封装的好处1、良好的封装能够减少耦合2、类内部的结构可以⾃由修改。
java初学者必看!Java中封装和继承的案例,对你学java很有帮助!

java初学者必看!Java中封装和继承的案例,对你学java很有帮助!⼀、代码及效果图1.封装案例:需求说明使⽤封装实现电⼦宠物系统的企鹅类正确输⼊健康值和亲密度保证健康值的有效性(0-100),否则取默认值60保证亲密度的有效性(0-100),否则取默认值60代码如下(⽰例):package work1;public class Dog {private String name;private String sex;private int love;public String getName() {return name;}public void setName(String name) { = name;}public String getSex() {return sex;}public void setSex(int sex) {if(sex==1){this.sex = "Q仔";}else{this.sex = "Q妹";}}public int getLove() {return love;}public void setLove(int love) {if(love>=0&&love<=100){this.love = love;}else {System.out.println("亲密度应该在0-100之间,默认值是60");this.love = 60;}}}package work1;public class Penguin {private String name;private String sex;private int health;public String getName() {return name;}public void setName(String name) { = name;}public String getSex() {return sex;}public void setSex(int sex) {if(sex==1){this.sex = "Q仔";}else{this.sex = "Q妹";}}public int getHealth() {return health;}public void setHealth(int health) {if(health>=0&&health<=100){this.health = health;}else {System.out.println("健康值应该在0-100之间,默认值是60");this.health = 60;}}}package work1;import java.util.Scanner;public class Test1 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("欢迎您来到宠物店! \n 请输⼊要领养宠物的名字:");String name = sc.next();System.out.println("请选择要领养的宠物类型:(1.狗狗 2.企鹅)");int i = sc.nextInt();if(i==1){//狗狗Dog dog = new Dog();dog.setName(name);System.out.println("请选择狗狗的性别:(1.Q仔 2.Q妹)");dog.setSex(sc.nextInt());System.out.println("请输⼊狗狗的亲密度(1~100之间):");dog.setLove(sc.nextInt());System.out.println("宠物的⾃⽩:\n 我的名字叫"+name+",健康值是"+0+",和主⼈的" +"亲密度是"+dog.getLove()+",我的性别是"+dog.getSex());}else {//企鹅Penguin p = new Penguin();p.setName(name);System.out.println("请选择企鹅的性别:(1.Q仔 2.Q妹)");p.setSex(sc.nextInt());System.out.println("请输⼊企鹅的健康值(1~100之间):");p.setHealth(sc.nextInt());System.out.println("宠物的⾃⽩:\n 我的名字叫"+name+",健康值是"+p.getHealth()+",和主⼈的" +"亲密度是"+0+",我的性别是"+p.getSex());}}}2.继承案例:使⽤继承优化电⼦宠物系统,抽取⽗类,创建⼦类,在⼦类中使⽤super调⽤⽗类构造⽅法。
java调用C#封装的dll方法

Java调用C# DLL的方法简介By 潘伟2012-8-7关于java调用C# 封装的DLL文件的方法第一种:java利用JNA进行调用思路:C#源码生成COM组件(dll和tlb文件),再利用C++进行封装,java通过JNA调用C++封装的DLL。
第二种:java利用jacob进行调用第一种java利用JNA调用C# DLL需安装Visual Studio 2010 ,下载jna.jar(解压放置于jdk_home/jre/lib/ext目录下)。
第一步:利用C#写COM组件1、新建一个类库项目(文件—新建—项目—类库;命名:COMTest);//根据实际需要取文件名2、生成.cs主文件;COMTestClass.cs3、右键点击工程->应用程序->程序集信息->使程序集com可见,打上勾4、右键点击工程->生成->为com Interop注册打上勾5、设置强签名(由于.Net下编译的COM组件并等同于C编译的COM组件,所以存在必须在运行目标机器注册的情况,对此.Net下编译的COM组件必须为程序进行签名,即强命名密钥;)打开Visual Studio Command Prompt 输入:sn -k MyKeyFire.snk 生成MyKeyFire.snk 文件,注意路径。
(.snk文件可以随意取,但.snk后缀名别忘记了)在签名标签中选中为程序集签名,选择刚刚生成的强名称文件MyKeyFire.snk 。
6、在“解决方案资源管理器”中找到节点“Properties”打开AssemblyInfo.cs文件如下图7、将[assembly: ComVisible(false)]属性改成[assembly: ComVisible(true)]如下图8、编译程序,\bin\Debug目录中会生成COMTest.dll 和COMTest.tlb文件。
第二步:利用C++进行再封装1、创建C++ DLL项目,新建项目->VC++->Win32 项目(名称:COMTest_Bridge)->下一步->应用程序类型:DLL2、添加类,类名:COMTest_Bridge,.h名:COMTest_Bridge.h,.cpp名:COMTest_Bridge.cpp,然后生成项目;3、把第一步生成的COMTest.dll 和COMTest.tlb文件放入C++项目下的Debug文件夹下。
java提取方法(一)

java提取方法(一)Java提取方法概述在Java开发过程中,我们经常会遇到一些重复的代码片段,为了提高代码的可读性、可维护性和可重用性,我们可以通过提取方法的方式将这些重复的代码片段封装起来。
本文将详细介绍几种常用的Java提取方法的方式。
1. 提取静态方法静态方法是一种不依赖于对象而存在的方法,可以直接通过类名调用。
当我们发现某段代码在多个地方被重复使用时,可以将其提取为一个静态方法。
例如,我们有以下重复的代码片段:public class Example {// ...public void method1() {// ... 一些代码("Hello, World!");// ... 一些代码}// ...public void method2() {// ... 一些代码("Hello, World!");// ... 一些代码}// ...}我们可以将其中重复的部分提取为一个静态方法:public class Example {// ...public void method1() {// ... 一些代码printHelloWorld();// ... 一些代码}// ...public void method2() {// ... 一些代码printHelloWorld();// ... 一些代码}public static void printHelloWorld() { ("Hello, World!");}// ...}2. 提取实例方法与静态方法相反,实例方法依赖于对象才能调用。
当我们发现某段代码在同一个类的多个方法中被重复使用时,可以将其提取为一个实例方法。
例如,我们有以下重复的代码片段:public class Example {// ...private int x;public void method1() {// ... 一些代码x++;// ... 一些代码}// ...public void method2() {// ... 一些代码x++;// ... 一些代码}// ...}我们可以将其中重复的部分提取为一个实例方法:public class Example {// ...private int x;public void method1() {// ... 一些代码incrementX();// ... 一些代码}// ...public void method2() {// ... 一些代码incrementX();// ... 一些代码}public void incrementX() {x++;}// ...}3. 提取带参数的方法当我们发现某段代码在多个地方被重复使用,并且该代码中包含一些不同的参数,可以将其提取为一个带参数的方法。
java封装的实例

java封装的实例摘要:I.引言- 介绍Java封装的概念- 阐述封装在Java中的重要性II.Java封装的实例- 实例1:类的私有成员- 实例2:构造函数的封装- 实例3:getter和setter方法的封装- 实例4:工具类封装III.封装的优势- 提高代码的可维护性- 提高代码的可读性- 提高代码的复用性IV.封装的注意事项- 适度封装- 封装与模块化的平衡V.总结- 总结Java封装的重要性和实例- 强调适度封装的原则正文:Java封装是面向对象编程的核心思想之一,它指的是将类的实现细节隐藏在类内部,只向外界暴露一些公共接口供其他对象访问。
封装可以有效地提高代码的可维护性、可读性和复用性。
在Java中,封装主要通过以下几种方式实现:首先,类的私有成员。
在一个类中,我们可以将一些成员变量设置为private,这样外界无法直接访问这些变量。
通过提供公共的getter和setter 方法,我们可以对外暴露这些变量的访问接口。
这样既保证了类的内部实现不被外部干扰,又使得外部能够方便地使用这些变量。
其次,构造函数的封装。
构造函数是用于创建类的实例的方法。
通过将构造函数设置为private,我们可以限制类的实例化,确保对象的正确初始化。
同时,我们还可以提供公共的静态方法来创建对象,这样更加方便和简洁。
再次,getter和setter方法的封装。
在Java中,我们通常使用getter和setter方法来实现对类的成员变量的访问和修改。
将成员变量设置为private,并提供getter和setter方法,可以保证类的内部实现不对外部暴露,同时使得外部能够方便地访问和修改这些变量。
最后,工具类封装。
在Java中,我们可以将一些常用的功能封装成一个工具类,提供一些静态方法供其他类调用。
这样既可以减少代码的冗余,又可以提高代码的复用性。
总之,Java封装在提高代码质量方面具有重要意义。
但是,我们也要注意适度封装,避免过度封装导致代码难以理解和维护。
java编写一个花名随机抽取器的实现示例

java编写⼀个花名随机抽取器的实现⽰例⼀.程序效果还记得以前上课的时候,⽼师会⽤⾃⼰写的⼀个抽取器抽取同学回答问题,当时想着我也要做⼀个,假期没事⼲,⾃学了java,闲来⽆聊,我也写⼀个,但是写的没有⽼师好,哈哈,好了说⼀下思路,先把界⾯布置好,然后逐⼀实现每个按钮的功能,其实也没什么难的。
⼆.需要⽤到的包import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.io.*;import java.util.*;三.代码1.相关实例对象,所以对象均为全局对象private static JLabel jl= new JLabel("⽂件:");private static JTextField jt =new JTextField();private static JButton OpenButton =new JButton("选择⽂件");private static JTextField jt2 =new JTextField();//⽂本框显⽰抽取名单private static JButton StartButton =new JButton("开始抽取");private static JLabel ClassjL= new JLabel("班级:");private static JTextField ClassjT =new JTextField();//显⽰班级private static JLabel NumjL= new JLabel("⼈数:");private static JTextField NumjT =new JTextField();//显⽰⼈数private static JLabel jl2= new JLabel("抽取模式:");private static JComboBox jc= new JComboBox();//下拉列表框private static JButton AboutButton =new JButton("关于");private static JOptionPane jo =new JOptionPane();//弹出⼀个提⽰框private static String[]s ;//⽤来存放⼈名private static Font font = new Font("宋体",Font.BOLD,18); //设置字体对象private static int Number=0;//⽤来存放抽取⼈数2.建⽴窗体,并完成组件的初始化private void windows() {JFrame jf =new JFrame ("花狗抽取器本⼈博客:");jf.setIconImage(new ImageIcon("Icon.jpg").getImage());Container c=jf.getContentPane();c.setLayout(new GridLayout(4,2,10,10));OpenButton.setFocusPainted(false);StartButton.setFocusPainted(false);AboutButton.setFocusPainted(false);//去掉按钮⽂字旁边的虚线框JPanel jp1 =new JPanel();JPanel jp2 =new JPanel(new BorderLayout());JPanel jp3 =new JPanel();JPanel jp4 =new JPanel();//添加⾯板jt.setColumns(10);ClassjT.setColumns(6);NumjT.setColumns(4);jt2.setHorizontalAlignment(JTextField.CENTER);jc.addItem("--请选择--");jc.addItem("抽取⼀⼈");jc.addItem("抽取三⼈");jc.addItem("抽取五⼈");jp1.add(jl);jp1.add(jt);jp1.add(OpenButton);jp2.add(jt2,BorderLayout.CENTER);jp3.add(ClassjL);jp3.add(ClassjT);jp3.add(NumjL);jp3.add(NumjT);jp3.add(jl2);jp3.add(jc);jp4.add(StartButton);jp4.add(AboutButton);c.add(jp1);c.add(jp2);c.add(jp3);c.add(jp4);jf.setVisible(true);jf.setBounds(800, 200, 400, 500);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);getOpenButton(); //下⾯三个⽅法是⽤来监听按钮事件⽅法getAboutButton();getSrartButton();}3.添加“打开⽂件”按钮监听事件:private void getOpenButton() {OpenButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {JFileChooser fc =new JFileChooser();//这个对象就是我们点击打开⽂件,出来的⽂件选择器fc.setCurrentDirectory(new File("."));//指定当前默认⽬录fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//可以选择只打开⽂件或者⽂件夹 fc.setMultiSelectionEnabled(false);//是否允许多选⽂件int i =fc.showOpenDialog(getContentPane());if(i==JFileChooser.APPROVE_OPTION) {//判断是否打开File file =fc.getSelectedFile();//显⽰选中内容jt.setText(fc.getSelectedFile().getName());try{FileReader fr =new FileReader(file);BufferedReader in =new BufferedReader (fr);String line= in.readLine();//读取txt⽂件中的内容s =line.split(" ");//以空格为分隔符,存储⼈名NewMessage(); //监听事件getjcomboBox();//监听事件}catch(Exception e1) {e1.printStackTrace();}}}});}4.“关于”按钮监听事件private void getAboutButton() {AboutButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {jo.showMessageDialog(null, "可建⽴txt⽂件:\n写⼊班级名字然后空格学⽣名字\n名字和名字之间必须要⽤空格隔开\n即可识别班级名称和⼈数以及名单"); }});}5.下拉列表框选择监听事件private void getjcomboBox() {jc.addItemListener(new ItemListener() {public void itemStateChanged(ItemEvent e) {if(e.getStateChange() == ItemEvent.SELECTED) {String itemSize = (String) e.getItem();if(itemSize=="抽取⼀⼈") {Number =1;}if(itemSize=="抽取三⼈") {Number =3;}if(itemSize=="抽取五⼈") {Number =5;}}}});}6.“开始抽取”按钮监听事件private void getSrartButton() {StartButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {switch(Number) {case 1:int num1 =(int)1+(int)(Math.random()*(s.length-1-1));jt2.setText(s[num1]);break;case 3:int []num3=new int[100];for(int i=0;i<100;i++) {num3[i]=(int)1+(int)(Math.random()*(s.length-1-1));}for(int i=0;i<98;i++) {if(num3[i]!=num3[i+1] && num3[i]!=num3[i+2] && num3[i+1]!=num3[i+2]) {String strtext1= s[num3[i]]+" "+s[num3[i+1]]+" "+s[num3[i+2]];jt2.setText(strtext1);break;}}break;case 5:int []num5=new int[100];for(int i=0;i<100;i++) {num5[i]=(int)1+(int)(Math.random()*(s.length-1-1));}for(int i=0;i<95;i++) {if(num5[i]!=num5[i+1] && num5[i]!=num5[i+2] && num5[i]!=num5[i+3] && num5[i]!=num5[i+4]&& num5[i+1]!=num5[i+2] && num5[i+1]!=num5[i+3] && num5[i+1]!=num5[i+4]&&num5[i+2]!=num5[i+3] && num5[i+2]!=num5[i+4]&&num5[i+3]!=num5[i+4]) {String strtext1= s[num5[i]]+" "+s[num5[i+1]]+" "+s[num5[i+2]]+" "+s[num5[i+3]]+" "+s[num5[i+4]];jt2.setText(strtext1);break;}}break;}}});}7.如果成功打开⽂件并读取,⽂本框显⽰内容private void NewMessage() {ClassjT.setText(s[0]);String s1="";s1=""+(s.length-1);NumjT.setText(s1);jt2.setFont(font);jt2.setForeground(Color.blue);jt2.setText("已就绪,请开始抽取。
java封装的实例

java封装的实例Java封装的实例Java是一种面向对象的编程语言,它提供了封装、继承和多态等特性。
其中,封装是一种将数据和方法封装在类内部的机制,通过封装可以隐藏实现细节,提高代码的安全性和可维护性。
本文将通过一个实例来介绍Java中的封装特性。
假设我们正在开发一个银行系统,需要设计一个账户类(Account),其中包含账户的基本信息和操作方法。
为了实现封装,我们需要将账户的属性和方法进行合理的封装。
我们定义一个Account类,包含私有的账户号码(accountNumber)、账户余额(balance)和账户密码(password)属性,以及公有的获取账户号码(getAccountNumber)、获取账户余额(getBalance)和设置账户密码(setPassword)方法。
```javapublic class Account {private String accountNumber;private double balance;private String password;public String getAccountNumber() {return accountNumber;}public double getBalance() {return balance;}public void setPassword(String password) {this.password = password;}}```在上述代码中,我们使用private关键字修饰了账户号码、账户余额和账户密码属性,使其只能在类的内部访问,实现了属性的封装。
同时,我们提供了公有的获取账户号码和账户余额的方法,供外部程序访问这些属性的值,但不能直接修改属性的值。
此外,我们还提供了设置账户密码的方法,以便账户的拥有者可以修改密码。
接下来,我们可以在Account类的外部使用封装后的属性和方法。
假设我们要创建一个账户并进行操作,可以按照以下步骤进行:```javapublic class Main {public static void main(String[] args) {Account account = new Account();account.setAccountNumber("1234567890");account.setPassword("password");double balance = account.getBalance();System.out.println("账户余额:" + balance);}}```在上述代码中,我们首先创建了一个Account对象,并使用setAccountNumber和setPassword方法设置账户号码和密码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简单的Java例子(新手)
用类的知识对不同的代码进行抽取与封装,使用另一个代码进行调用
实例
先上原代码:
这是一个运用arraysort进行简单排序的代码,这样的代码每次只能是执行一次,这就以为着如果需要进行不同的排序就需要,重新将排序的过程编写出来,这样既费时间有会造成空间的浪费
用类的知识重新修改代码,使之只写一遍,不断的调用排序代码
先看这个代码,这些代码一共有两个功能,一个是进行排序,另一个是进行打印我们将排序和打印分别抽取封装在不同的类中
格式如下:
Public static void 方法名(数据类型[] 数据名)
另外,除了封装的排序和打印的代码以外,还有一个调用这些代码的程序
即是这段代码的最上面的一段
Public static void main(String [] args)
Int[] 数组名={}
类名.方法名(数据名)
在这个代码中中间排序的代码使用的就和上面的方法不同,上面使用的是返回值为空的void 方法,这里使用的是有返回值的方法,需要在整个代码的最后写上return 数据名
它的第一行是public static int[] 方法名{int [] 数据名}
最后输出return 数据名
由于他们都在同一个类中,所以在上面调用这方法时可以不加前面的类名,即把原来的数据类名.方法名(数据名)改成方法名(数据名)
另外还可以把原来的格式直接改为方法名1{方法名2{数据名}}实现一步调用。