2、面向对象的几个基本概念
一、面向对象的程序设计中的两个重要概念:
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、重写:在子类与父类之间,方法一模一样(方法名、返回类型、参数)