面向对象三大特性

封装:

  • 该露的露,该藏的藏

    • 程序设计要求**“高内聚,低耦合”**。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用
  • 封装(数据的隐藏)

    • 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏
  • 属性私有,get/set

  • package com.oop.demo04;/*** 封装:一般来说封装大多数都是类中的属性,而很少封装方法* 意义:*      1.提高程序的安全性,保护数据*      2.隐藏代码的实现细节*      3.统一接口*      4.增加了系统的可维护性** 类    私有:private  (关键字)*/
    public class Student {//属性私有private String name;private int age;private int id;private char sex;//提供一些可以操作这些属性的方法// public 的get/set方法// get:获得这个数据public String getName() {return name;}public int getAge() {return age;}public int getId() {return id;}public char getSex() {return sex;}// set:给数据设置值public void setName(String name) {this.name = name;}public void setAge(int age) {if(age<120 || age>0){this.age = age;}else{System.out.println("请不要用你的年龄开玩笑");}}public void setId(int id) {this.id = id;}public void setSex(char sex) {this.sex = sex;}}

继承

  • 继承的本质是对某以批类的抽象,从而实现现实世界更好的建模

  • extends的意思是扩展。子类是父类的扩展

  • Java中类只有单继承,没有多继承。

  • 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等

  • 继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示

  • 子类和父类之间,从意义上讲具有“is a”的关系

  • package com.oop.demo05;//继承
    //Person  人  :父类
    //在Java中,所有的类都直接或间接默认继承Object类public class Person {private int money = 10_0000_0000;public void say(){System.out.println("我爱你");}public int getMoney() {return money;}public void setMoney(int money) {this.money = money;}
    }/*
    package com.oop;import com.oop.demo03.Pet;import com.oop.demo05.Student;import com.oop.demo05.Teacher;public class Application {public static void main(String[] args) {Student student = new Student();Teacher teacher = new Teacher();student.say();System.out.println(teacher.getMoney());}
    }*/
    
  • package com.oop.demo05;//Student is 人 :子类
    public class Student extends Person{}
  • package com.oop.demo05;//Teacher is 人:  子类
    public class Teacher extends Person{}
  • package com.oop;
    /*** 测试类*/import com.oop.demo03.Pet;
    import com.oop.demo05.Student;
    import com.oop.demo05.Teacher;public class Application {public static void main(String[] args) {Student student = new Student();Teacher teacher = new Teacher();student.say();System.out.println(teacher.getMoney());}
    }
    
  • object类

    • 在Java中,所有的类都直接或间接的继承Object类
  • super

    • 在父类中私有的东西无法被继承(private关键字)

    • package com.oop.demo05;//Person  人  :父类public class Person {public Person(){System.out.println("Person无参执行了")}protected String name = "王某某";public void print(){System.out.println("Person");}
      }
    • package com.oop.demo05;//Student is 人 :子类
      public class Student extends Person{public Stydent(){//隐藏代码super();//在调用父类构造器的时候,super();一定在子类构造器的第一行System.out.println("Student无参执行了");}private String name = "李某某";public void test(String name){System.out.println(name);//王大海System.out.println(this.name);//李某某System.out.println(super.name);//王某某}public void print(){System.out.println("Student");}public void test1(){print();//Studentthis.print();//Studentsuper.print();//Person}
      }
    • package com.oop;import com.oop.demo05.Student;/*** 测试类*/public class Application {public static void main(String[] args) {Student student = new Student();student.test("王大海");student.test1();}
      }
    • 运行结果:
      Person无参执行了
      Student无参执行了
      王大海
      李某某
      王某某
      Student
      Student
      Person
      
    • super注意点:1. super调用父类的构造方法,必须在构造方法的第一个2. super必须只能出现在子类的方法或者构造方法中3. super和this不能同时调用构造方法Vs this:代表的对象不同:this:  本身调用这个对象super: 代表父类对象的调用前提:this:  没有继承也可以调用super: 只能在继承条件下调用构造方法:this(): 本类的构造super():父类的构造
      
  • 方法重写

    • package com.oop.demo05;                                   package com.oop.demo05;//重写都是方法的重写,和属性无关
      public class B {                                          public class B{public  void test(){                                     public static void test() { System.out.println("B>=test()");                                System.out.println("B>=test()"); }                                                                  }
      }                                                                 }
    •  package com.oop.demo05;                                 package com.oop.demo05;    public class A extends B {                               public class A extends B {public  void test(){                                       public  void test(){System.out.println("A>=test()");                         System.out.println("A>=test()");}                                                                   }
      }                                                                  }
    • package com.oop;import com.oop.demo05.A;
      import com.oop.demo05.B;
      import com.oop.demo05.Student;public class Application {public static void main(String[] args) {//静态方法和非静态方法区别很大//静态方法:方法的调用只和左边:定义的数据类型有关A a = new A();a.test();//父类的引用指向了子类B b = new A();                                         B b = new A();//子类重写了父类的方法b.test()}
      }
    • 运行结果:A>=test()                                                  A>=test()A>=test()                                                  B>=test()
      
    • 重写总结:1.需要有集成方法,子类重写父类的方法2.方法名必须相同3.参数列表必须相同4.修饰符:范围可以扩大,不可以缩小 public>protected>default>private5.抛出的异常:范围可以缩小但不能扩大
      重写:子类的方法和父类的要一致,方法体不同!为什么需要重写:1.父类的功能,子类不一定需要或不一定满足2.alt+Insert:override
      

Study16 面向对象三大特性相关推荐

  1. 【Python学习笔记】面向对象三大特性

    2019独角兽企业重金招聘Python工程师标准>>> ★面向对象:封装.继承和多态是面向对象的三大特点★ 面向对象编程简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元 ...

  2. python 面向对象(三大特性)

    python 面向对象(初级) (思维导图 ↑↑↑↑↑) 概述: 面向过程:根据业务逻辑从上到下垒代码. 函数式:将某功能代码封装至函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类 ...

  3. [.net 面向对象编程基础] (13) 面向对象三大特性——多态

    [.net 面向对象编程基础] (13) 面向对象三大特性--多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...

  4. 【Python面试】 说说Python面向对象三大特性?

    往期面试题: 谈谈对 Python 和其他语言的区别? 说说 Python 解释器种类以及特点? 说说4种常用编码的区别? 废话不多说,开始今天的题目: 问:说说Python面向对象三大特性? 答:P ...

  5. python面向对象三大特性、类的约束、print带颜色输出及super补充

    面向对象三大特性.类的约束.print带颜色输出及super补充 简述: python面向对象的三大特性: 1.继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为 ...

  6. python面向对象三大特性_Python面向对象之多态原理与用法案例分析

    本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...

  7. Python OOP:面向对象三大特性(封装、继承、多态)、类属性和实例属性、类方法@classmethod、静态方法@staticmethod、函数和类callable、__call__

    一.面向对象三大特性 二.多态 定义:多态是⼀种使⽤对象的⽅式,⼦类重写⽗类⽅法,调⽤不同⼦类对象的相同⽗类⽅法,可以产⽣不同的执⾏结果. 一个父类,可以继承给多个子类,每个不同的子类可以创建多个对象 ...

  8. java 面向对象多态_乐字节Java面向对象三大特性以及Java多态

    ​ 以上就是本次学习的6大任务.我们依次来看. 1 Object类 Object类是所有Java类的根基类. 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类. cla ...

  9. python面向对象三大特性6大原则_【Python学习笔记】面向对象三大特性

    ★面向对象:封装.继承和多态是面向对象的三大特点★ 面向对象编程简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为 ...

最新文章

  1. hyperledge工具-configtxgen
  2. 字符串逆序的几种方法
  3. Spark transformation算子案例
  4. 前端学习(2425):复习
  5. java中接口私有反方_接口中的Java 9私有方法
  6. sign签名算法一致算法-.net、java、golang
  7. python 根据关键字 切割pdf_用python拆分pdf
  8. STM32 USB主机通信连接中断过程
  9. matlab里删除文件恢复,删除的文件如何恢复?360安全卫士找回误删文件
  10. wmp流代理服务器设置为空,03服务器安装wmp10的方法
  11. 软件里的alpha版和beta版是什么意思?
  12. tornado, twister, cyclone,Typhoon,hurricane…到底如何区别?
  13. charles 本地IP地址
  14. Python 核心编程(第二版)——网络编程
  15. 阅读用户思维的思考。
  16. 移动 webApp 开发入门与进阶
  17. python listdir 忽略 隐藏文件_忽略特殊文件
  18. 【掌上齐齐哈尔】市民网上换领驾驶证方便快捷
  19. ApiPost 前后端协作开发神器 Postman+Swagger+Mock+Websocket的完美替代品
  20. 亚马逊云服务器是干嘛用的,亚马逊云服务器免费12月套餐及使用步骤

热门文章

  1. scipy.sparse.vstack
  2. 论文阅读笔记:《一种改进的图卷积网络半监督节点分类》
  3. [合规性检查方法-Fitness3】基于足迹矩阵的拟合度评估方法
  4. 25个漂亮的旅游网站设计作品欣赏
  5. JavaSE02-JVM、JRE、JDK
  6. 癌症专家推荐:揭秘抗癌果蔬排行18强(组图)
  7. call()的具体使用方法
  8. 超好用的Redis管理及监控工具
  9. 如何进行自媒体创业?你是否能把握住,短视频都有哪些变现方式?
  10. 系统测试常见类型及说明