面向对象
1,三个特征:封装,继承,多态
2,类和对象之间的关系
类:对现实生活中事物的描述
对象:是这类事物在现实中实实在在的存在
3.封装:是指隐藏对象的属性和细节,仅对外提供共有访问方式
好处:将变化隔离、便于使用、提高复用性、提高安全性
原则:将不需要对外提供的内容都隐藏起来
4.构造函数:
特点:(1)构造函数与类名相同 (2)不用定义返回值类型 (3)不可以写return语句
作用:给对象进行初始化
注意:可以拥有多个构造函数,这些构造函数必须以重载的形式存在;当没有构造函数时,系统会自动加入一个空参数的构造函数
小插曲:
构造代码块:
作用:给对象进行初始化,对象一建立就运行,而且优先于构造函数执行
与构造函数的区别:构造代码块是给所有对象进行统一的初始化,而构造函数是给对应的对象进行初始化
5.this关键字
特点:就代表本类的对象,代表所在函数所属对象的引用
(1)可以避免:局部变量与成员变量重名而导致变量使用不当。局部中有该变量就使用局部,局部没有就去类成员中去找
(2)本类功能内部使用到本类对象,都用this来代表本类自己
(3)构造函数中调用本类构造函数时,不能直接使用构造函数调用构造函数,但是可以使用this来指代被调用的构造函数,此时this还是代表对象
6.static关键字
特点:是一个修饰符,用于修饰成员,被修饰后就被所用成员共享,还可以直接被类名调用(类名.静态成员)
被修饰之后就会存在与方法区(共享区、数据区)
(1)随着类的加载而加载,随着类的消失而消失
(2)优先于对象的存在
(3)被所有对象所共享
(4)可以直接被类名调用
静态代码块:随着类的加载(用到类中内容)而执行,只执行一次
继承:
特点:(1)提高了代码的复用性 (2)让类与类之间产生关系,有了这个关系才有了多态的特性
java中只支持单继承,因为多继承容易带来安全隐患。当多个父类中定义了相同的功能,但功能内容不同时,子类对象不确定要运行哪一个
但是java保留了这种机制,并用另一种体现形式来完成表示--多实现
原则:查阅父类功能,创建子类对象使用功能。
final关键字:
特点:
(1)可以修饰类,函数,变量
(2)被final修饰的类不可以被继承
(3)被final修饰的方法不能被复写
(4)被final修饰的变量是一个常量,只能被赋值一次,既可以修饰成员变量,又可以修饰局部变量
(5)弥补了继承打破了封装性的特点
抽象类(abstract):
当多个类中出现相同功能,但是功能主体不同,这时可以进行向上抽取。这时,只抽取功能定义,而不抽取功能主体。
特性:
(1)抽象方法必须放到抽象类中
(2)抽象方法和抽象类都必须被abstract关键字修饰
(3)抽象类不可以使用new创建对象,因为调用抽象方法没有意义
(4)抽象类中的抽象方法要被使用,必须由子类复写其使用的抽象方法后,建立子类对象调用,如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类
接口(interface):
可以理解为一个特殊的抽象类
(1)接口中的成员都有固定修饰符,常量(public、static、final),方法(public、abstract)
(2)接口是不可以创建对象的,因为有抽象方法,需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以被实例化,否则子类是一个抽象类
(3)接口可以被类多实现,也是对多继承不支持的转换形式,java支持多实现