一、简述:
面向对象开发:
就是不断的创建对象,使用对象,指挥对象做事。
面向对象设计:
其实就是在管理和维护对象之间的关系。
面向对象的特征:
封装
继承
多态
二、类与对象
现实世界描述一个事物,通过
属性:该事物的描述信息
行为:该事物是做什么的
Java语言中最基本的单位是类,我们把现实世界的事物通过类体现出来,类与事物的关联关系:
事物: 类:
属性 ——————> 成员变量
行为 ___________> 成员方法
类:就是一组相关的属性和行为的集合,是抽象的概念
对象:是该类事物的具体体现,具体的存在的个体。
定义一个类就是定义一个类的成员变量和成员方法,成员变量和成员方法都是在类中定义的。
三、封装
成员变量和局部变量的区别:
A:位置不同:成员变量是定义在类中方法外的,局部变量是定义在方法中的;
B:内存中的位置不同:成员变量在堆内存中,局部变量在栈内存中;
C:生命周期不同:
成员变量随着对象的存在而存在,随着对象的消失而消失;
局部变量随着方法的调用而存在,随着方法的调用完毕而消失;
D:初始化值不同:
成员变量有默认的初始值;
局部变量没有默认的初始值,必须定义,赋值,才能使用 。
形式参数:
基本类型:形式参数的改变不影响实际参数
引用类型:形式参数的改变直接影响实际参数
匿名对象:
概念:没有名字的对象,直接new ;
应用场景:
A:调用方法,仅仅只调用一次的时候。调用多次不合适,优点在于,匿名对象调用完毕后就是垃圾,可以被垃圾回收器回收。
B:匿名对象可以作为实际参数传递。
封装概述:
指隐藏对象的属性和行为,只对外提供公共的访问方式。
优点:
A:隐藏实现细节,提供公共访问方式;
B:提高了代码的复用性;
C:提高了安全性。
封装原则:
将不需要对外提供的内容都隐藏起来;把属性隐藏,提供公共访问方式对其访问。
权限修饰符:
private:私有的,修饰成员变量和成员方法,被其修饰的成员只能在本类中才能访问,一般修饰变量;
默认的:被其修饰的成员可以在同一个类中或者同一个包中被访问
protected:受保护的,修饰成员变量和成员方法,被其修饰的成员可以在同一个类中、同一个包中,不同包中的子类被访问
public:被其修饰的成员可以子啊同一个类中,同一个包中,不同包中都可以访问
被private修饰的成员变量,提供对应的getXxx()和setXxx()方法,构成封装性;
构造方法概述和格式
概述:给对象的数据进行初始化;
格式:方法名和类名相同;没有返回值类型,没有具体的返回值;
注意事项:不写构造方法,系统默认一个构造方法;
一旦定义了构造方法,系统不在提供,如果写了有参构造方法,最好写上无参构造方法;
构造方法也可以重载;
类的初始化过程:
例如: Students s = new Student ()
A:加载Student.class文件进内存;
B:在栈内存为s开辟内存空间;
C:在堆内存为学生对象创建内存空间;
D:对学生对象的成员变量进行默认初始化;
E:对学生对象的成员变量进行显示初始化;
F:通过构造方法对学生对象的成员变量赋值;
G:学生对象初始化完毕,把对象地址赋值给s变量
static关键字概述:
static特点:
A:随着类的加载而加载;
B:优先于对象存在;
C:被类的所有对象共享,是共性;一般某个成员变量被所有对象所共享的,那么应设置为静态;
D:一般static修饰的成员变量用类名.调用
D:在方法区的静态区
注意事项:
在静态方法中,没有this关键字;
静态方法只能访问静态的成员变量和静态的成员方法;
main方法格式详解:
public :公共的,访问权限是最大的,由于main方法是被jvm调用,所以权限要够大;
static:静态的,不需要创建对象,类名直接调用,方便jvm调用;
void:不需要返回值给jvm
main:常见的方法入口
String [] args:这是一个字符串数组,格式 :ava 类名 参数1 参数2
抽象类:
A:使用abstract 关键字修饰
B:抽象类不一定有抽象方法,但有抽象方法的类,一定是抽象类
C:抽象类不能实例化
D:抽象类的子类要么是抽象类,要么必须重写抽象类中的抽象方法
抽象成员特点:
A:成员变量:可以是常量也可以是变量
B:构造方法,有构造方法
C:成员方法:可以是抽象的,也可以是非抽象的
抽象类的问题:
A:抽象类中有构造方法,不能实例化,作用是给子类访问父类进行数据初始化
B:一个类没有抽象方法,却被定义为抽象类,作用:不让创建对象
C:abstrat 不能与final、static、private共存
接口:
A:使用关键字interface修饰;
B:类实现接口使用implement关键字
C:接口不能实例化
D:接口的实现类,要么是抽象类,要么必须重写接口中所有抽象方法
接口成员特点:
A:成员变量:只有静态常量,public static final修饰
B:没有构造方法
C:成员方法:只有抽象成员方法 public abstract 修饰
类与类,类与接口,接口与接口
A:类与类
继承关系,单继承,多层继承
B:类与接口
实现关系,可单实现,也可多实现,
还可以继承类后同时实现多个接口
C:接口与接口
继承关系,可单继承,也可多继承
抽象类和接口的区别
A:成员区别:
抽象类:成员变量可是变量,也可是常量
成员方法可是抽象方法,也可是非抽象方法
接口: 成员变量是静态常量
成员方法必须是抽象方法
C:设计理念:
抽象类: is a 定义的是共性
接口: like a 定义的是扩展性