java对象和封装,面向对象封装的例子

  java对象和封装,面向对象封装的例子

  00-1010面向对象思想的封装什么是封装?封装的好处:getter方法和setter方法toString方法摘要:

  00-1010也许你们都听说过java是一门纯面向对象的语言,面向对象的思想就是我们常说的OOP。我们听到最多的想法是继承、封装和多态。今天我们将讨论封装。

  

目录
封装就是一种将数据和操作数据的方法进行有机结合,一个函数抽象类的接口实现了对细节的封装和隐藏,让我们只需要调用对外开放的公共接口去实现与对象的交互.我们可以把封装理解为一个保护屏障,需要一些严格的接口来控制。我们可以修改自己的代码来实现类的内部结构,但是不能修改那些公共接口。这提供了更好的安全性。

  00-1010好的封装可以降低耦合度,更精确的控制成员变量,封装隐藏细节,更安全。您可以修改类的内部代码,而无需修改那些公共接口。说到封装,就必须说到private这个关键词,也就是访问修饰符。

  回想一下我们见过哪些访问修饰符?有public,成员变量不加任何东西的默认权限在英文里是default,还有private我们今天会解释,下一篇文章会解释protected。

  私了有什么用?

  让我们回忆一下上一篇文章中提到的类和对象。接下来,我将创建一个学生类。

  //创建一个学生类class Student { public String name)//学生名public int age//学生时代公共字符串性别;//学生性别公共双分;//学生成绩public void sleep(){ system . out . println(我要睡觉了!);} public void eat(){ system . out . println(我要干饭!);} public void exam(){ system . out . println(我要去考试了! );} } public class test demo { public static void main(String[]args){ Student Student=new Student();//用new关键字实例化一个对象student.age=19Student.name=积累很多钱;student.score=99.9Student.sex= male}}对于上面的代码,我们单独给这个学生成员变量赋值。这样写会有什么缺点吗?

  想想看,如果我们每次都要定义一个学生对象,那么每次都这样赋值会不会有点太麻烦?当我们今天谈论封装时,它会使它变得更简单。请看下面的代码:

  class Student {私有字符串名称;//学生姓名private int age//学生时代私串性;//学生的性别私双分;//学生成绩publicstringgetname(){ return name;} public void set name(String name){ this . name=name;} } public class test demo { public static void main(String[]args){ Student Student=new Student();Student.setName(随时间累积);system . out . println(student . getname());}}按照封装的概念,我能不能把它封装成一个公共接口,然后调用它。

  好接下来分析一下这个代码:

  因此,我们在成员变量前面添加了私有修饰,这样成员变量只能在类内部访问,而不能在类外部访问。然后我们实现setName getName方法,调用者的两个接口可以进行初始化和返回值操作,更好的体现了封装性。

  

面向对象思想之封装

  getter方法和setter方法为了更方便的调用这些接口,IDEA会为我们提供了这些接口,我们通常情况下把这些方法叫做getter方法和setter方法。只要我们需要我们就可以调用这些共有的getter方法和setter方法。

  IDEA快捷键:Alt + insert

  

  

class Student { private String name;//学生姓名 private int age;//学生年龄 private String sex;//学生性别 private double score;//学生分数 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } public void sleep() { System.out.println("我要睡觉了!!!"); } public void eat() { System.out.println("我要干饭了!!!"); } public void exam() { System.out.println("我要考试了!!!"); }}public class TestDemo { public static void main(String[] args) { Student student = new Student();//利用new关键字实例化一个对象 student.setName("厚积薄发"); student.setAge(19); student.setScore(99.9); student.setSex("male"); System.out.println(student.getName()); System.out.println(student.getAge()); System.out.println(student.getScore()); System.out.println(student.getSex()); }}

  

toString方法

此外,我们每个成员变量都要自己实现一遍打印操作,没错IDEA编译器又为我们提供了一个方法,这个方法叫做toString方法,快捷键是 Alt +insert然后选择toString方法。

  

  我们直接打印对象的引用就可以调用toString方法.

  有同学就会问为什么呢?

  这就得需要我们看一看println的源码是怎么实现的了。

  我们按住ctrl 点进println这个方法

  

  我们通过源码就可以发现,println会调用toString方法,如果定义了toString方法,那他就调用toString方法,如果没有调用他就会打印:

  

  eg:

  

  快捷键: Alt + insert 选择constructor

  

  

  

总结:

private关键字:利用private修饰的成员变量和方法只能在本类中访问,如果在外部访问可以调用公有的setter方法和getter方法。

  封装的优点:减少代码的耦合性 , 可以自由修改自己的内部类,不用修改公有地接口 ,隐藏信息实现细节,更精准的控制成员变量。

  要记住并且运用并且调用这些公共的接口:getter方法和setter方法 还有toString方法以及 构造方法。

  本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注盛行IT的更多内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: