欢迎光临,了解微信小程序开发,就上易用通!

【后端】java基础(5.2)java高级基础之对象的三大特性

发布:2018-01-24 15:58浏览: 来源:网络 作者:tianshu

本章我们来进一步来了解一下java对象的特性。
我们的java对象有三大特性:

  • 封装
  • 继承
  • 多态

先说封装吧:

  • 封装的定义是:隐藏对象的属性和实现细节,仅对外提供公共访问方式

通过上一章节,我们创建的一个对象可以提现这一点,比如我在对象内封装了eat这个方法,在eat方法内对体重做了处理,对外仅仅提供了eat这个方法让别的程序来调用,这点用到的就是封装了。

再说说继承:

  • 继承的定义是:从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的功能

我们假设现在有人类,人类有姓名,年龄,性别,身高,体重。人的行为也有个吃。然后我们现在还有个学生类,因为学生也是人,因此学生拥有人类的一切属性和行为,但是学生他又具备了人所不具备的属性,如班级,也具备了人不具备的行为,比如考试。那么,我如果再写个学生类,把人类的东西再拷过来一遍,是不是很麻烦。于是,神奇的java再一次解决了我们所考虑的问题,直接上代码吧:
-首先我们还是那个Person类


  1. public class Person {
  2. private String name;//姓名
  3. private int age;//年龄
  4. private String gander;//性别
  5. private int height;//身高
  6. private int weight;//体重
  7. public void eat(){
  8. this.weight += 1;
  9. }
  10. public String getName() {
  11. return name;
  12. }
  13. public void setName(String name) {
  14. this.name = name;
  15. }
  16. public int getAge() {
  17. return age;
  18. }
  19. public void setAge(int age) {
  20. this.age = age;
  21. }
  22. public String getGander() {
  23. return gander;
  24. }
  25. public void setGander(String gander) {
  26. this.gander = gander;
  27. }
  28. public int getHeight() {
  29. return height;
  30. }
  31. public void setHeight(int height) {
  32. this.height = height;
  33. }
  34. public int getWeight() {
  35. return weight;
  36. }
  37. public void setWeight(int weight) {
  38. this.weight = weight;
  39. }
  40. }

然后,我们写一个学生类,让它继承(extends)Person类,并且写上我们的班级属性还有考试方法:


  1. public class Student extends Person {
  2. private String classes;//班级
  3.  
  4. public void test(){
  5. System.out.println("考试考试考试");
  6. }
  7.  
  8. public String getClasses() {
  9. return classes;
  10. }
  11.  
  12. public void setClasses(String classes) {
  13. this.classes = classes;
  14. }
  15.  
  16. public Student(String classes) {
  17. super();
  18. this.classes = classes;
  19. }
  20.  
  21. public Student() {
  22. super();
  23. }
  24. }

当我面和创建Person对象一样去创建Student对象时,你会发现,创建出来的student实例不仅有Student的属性和行为,同时还具有Person的属性和行为并且可以直接使用。在这里,Person类叫做Student类的父类,Student类是Person类的子类:所有类的父类都是Object类

最后说多态:

  • 多态的定义是:某一类事物具备的多种表现形态

我们的Person这个对象里面的方法只是有个吃,不管吃多少,吃一次体重都是+1,在Student里,我们想让吃这个方法更具体化,我们吃多少体重增加多少:


  1. public class Student extends Person {
  2. private String classes;
  3.  
  4. public void test(){
  5. System.out.println("考试考试考试");
  6. }
  7.  
  8. public void eat(int i){
  9. this.setWeight(this.getWeight()+i);
  10. }
  11.  
  12. public String getClasses() {
  13. return classes;
  14. }
  15.  
  16. public void setClasses(String classes) {
  17. this.classes = classes;
  18. }
  19.  
  20. public Student(String classes) {
  21. super();
  22. this.classes = classes;
  23. }
  24.  
  25. public Student() {
  26. super();
  27. }
  28. }

  1. public static void main(String[] args) {
  2. Student student1 = new Student();
  3. student1.setName("大妖怪");
  4. student1.setWeight(10);
  5. System.out.println(student1.getWeight());
  6. student1.eat();
  7. System.out.println(student1.getWeight());
  8. student1.eat(20);
  9. System.out.println(student1.getWeight());
  10. }

当我面再次创建实例的时候:你会发现Student1可以调用的eat()方法有两个,一个是不用传参数的一个需要传参数。 在Sudent那我们那写着“int i”,这个叫做形参(形式参数),而在我们调用的时候传的“20”,这个叫做实参(实际参数),至于形参和实参的区别,哎,懒得写了,百度吧,这就讲得很对: 【后端】java基础(5.2)java高级基础之对象的三大特性(图1)

下章我们会来讲讲为什么我们在有的地方中使用public而有的地方使用private。恩,提前讲下,写在这个位置的东西叫做修饰符,它的作用是用来控制参数/方法对外的访问权限的。





免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。