2、面向对象的几个基本概念

一、面向对象的程序设计中的两个重要概念:1、类:创建的所有 class 都是类,是一个抽象的概念,类中包含了数据(在类中叫属性或成员变量)与对数据的操作(在类

一、面向对象的程序设计中的两个重要概念:

  1、:创建的所有 class 都是类,是一个抽象的概念,类中包含了数据(在类中叫属性成员变量)与对数据的操作(在类中叫做方法)。例如人是一个类,他有姓名、年龄等数据属性、好友吃饭、睡觉、娱乐、和工作等动作。

    方法:静态方法(static修饰符)、非静态方法(无static修饰符) 

    方法之间的调用关系:

            1)、非静态方法调用静态方法或者非静态方法可以直接调用。

            2)、静态方法调用静态方法可以直接调用。静态方法调用非静态方法需要 new 对象,通多对象.方法名来调用。

            3)、静态方法或者非静态方法都是属性里面的方法所以都可以先 new 一个对象,然后通过对象.方法名来调用。

    【注意】方法不能嵌套,即方法不能定义在另一个方法里面。

  2、对象:(又叫作实例,所以生成一个对象的过程就就叫做实例化)是对象的具体的概念。例如人是一个类、那么具体到那个人就是人的对象了。

  3、命名约定:

    a): 首字母大写,如果一个类名由多个单词组成,则每个单词的首字母大写,中间不使用任何连接符。如果Person、MemberTest

    b)方法:首字母小写,如果一个方法名由多个单词组成,则第一个单词全部小写,从第二个单词开始,每个单词首字母大写。如add、addUser

    c)属性: 命名约定同方法相同。如age、userName

二、面向对象的三大特点:

  1、封装:将数据与方法放在一个类中就构成了封装。通俗的讲是指隐藏对象的属性和实现细节。

    【好处】将变化隔离、便于使用、提高重用性、提高安全性

    【封装的原则】将不需要对外提供的内容都隐藏起来、把属性都隐藏,提供公共方法对其访问

  2、继承:使用extends关键字后,子类对象拥有父类对象的属性和方法。

    1)提高代码的复用性。
    2)让类与类之间产生关系,有了这个关系,才有了多态的特性。
    3)Java中只支持单继承,不支持多继承。
    4)Java支持多层继承。

  3、多态:可以理解为事物存在的多种体现形式(父类类型的变量引用指向子类类型的对象)。

    1)、体现:父类类型的应用指向自己的子类对象,传递参数时、父类的应用可以接收自己的子类对象。

    2)、前提:必须使类与类之间的关系,要么继承要么实现。

    3)、好处:多态的出现大大的提高了程序的扩展性。

    4)、使用:当使用多态方式调用方法时,会首先检查父类中是否有对应的方法,如果没有则编译错误;如果有则会调用子类对应的方法

    5)、转换:

         向上类型转换:将子类型转换为父类型,不需要加显示指定。

         向下类型转换:父类型对象的引用指向的是哪个子类型对象,就能转换为对应的子类型的引用,必须显示指定(必须使用强制类型转换)

三、构造方法:构造方法用于完成对象属性的初始化工作

  1、构造方法必须与类名完全一致。

  2、构造方法没有返回值,不可以写return语句,也不能出现void。

  3、如果在一个类中没有声明构造方法,那么Java编译器会自动为类添加一个没有参数且方法体为空的构造方法(默认的构造方法),如果类中声明一个带参数的构造方法,刚Java编译器不会自动添加默认构造方法

  4、一个类中可以有多个构造方法,但参数不能相同

  5、不能显示的调用构造方法,构造方法通过new关键字隐式来调用且只调用一次

  6、一般在定义了有参构造器的同时再写一个空的无参构造器。

四、重载和重写的区别

  1、重载:一个类中可以有多个相同的方法名,但参数不相同(参数的个数,参数的类型),这就是重载。

  2、重写:在子类与父类之间,方法一模一样(方法名、返回类型、参数)