面向过程:强调的是每一个功能的步骤
面向对象:强调的是对象,然后用对象来调用功能
一.面向对象的特征:
抽象
封装
继承
多态
二.封装:隐藏对象的属性和实现细节,仅对外提供公共访问形式。
类:
组成:成员变量,成员方法,构造方法
1.变量:
(1)成员变量和局部变量区别?
位置,内存位置,生命周期,初始化值(二者名称一样时----就近原则)
2.方法:
(1)形参
分类:基本类型,引用类型(传的是地址,三种引用类型)
形参类型补充: 类名:需要的是该类的对象;
抽象类:需要的是该抽象了子类对象;
接口:需要的是该接口的实现类对象。
(2)返回值
分类:基本类型,引用类型(也是三种)
返回值类型补充:类:返回的是该类对象
抽象类:返回的是该抽象类的子类对象:
接口:
(3)匿名对象
应用场景:A.调用一次后被回收,B.可作为实参传递
(4)构造方法
好处:对必要参数初始化,减少代码量;
A.自己不给,系统自动提供一个无参构造
B.自己给出,系统将不再提供无参构造函数
形式:SetXxx和构造方法
3.关键字:
(1)private
可以修饰什么?
访问权限?
(2)this
当前类的一个对象
*应用场景:解决局部变量,隐藏成员变量。
(3)static
存在的意义:让使用者通过类名去访问;说白了,也是为了初始化,只不过在类的层面上!!!!!
访问权限?----可以修饰成员变量,还可以是成员方法
static关键字的特点:ABCD
E静态方法中无this关键字,why?
F.静态方法只能访问静态成员变量和静态成员方法
静态变量和成员变量区别:
所属,内存位置,内存中出现时间,调用不同
如图:
栈区:存放局部变量(Person p1=new Person 同样符合局部变量的命名规范:变量类型 变量名=变量初始化值)
堆区:存放对象
方法区:比较复杂;这里包括:类内容区域,静态区,方法区........
由图知:将类放到方法区的同时,同样在方法区开辟了一块静态区,存放静态数据。静态数据属于类成员。
4代码块
(1)概念:用{}括起来的成为代码块
(2)分类:按位置和声明不同:局部代码块;构造代码块;静态代码块
(3)静态代码块,构造代码块,构造方法,执行顺序:?
内部类(补充):
(1)概述:把类定义到其他类内部,就成为内部类。
(2)访问特点:A.内部类可以直接访问外部类的成员,包括私有:
B.外部类要访问内部类的成员,必须创建对象。
(3)匿名内部类:是一个继承了该类或者实现了该接口的子类匿名对象
三.继承:
1.概念,特点
特点:子继承父所有非私有成员
子不能继承父构造方法,但可通过super访问。
子所有构造方法默认都会访问父中无参构造方法。?
如果父中没有无参构造,会报错,怎么解决?ABC
补充:A.一个类的初始化过程:(当然静态数据随类加载而加载,最先初始化!)
成员变量的初始化
默认初始化
显示初始化
构造初始化
B.子父类的初始化(分层初始化)
先进行父类初始化,然后进行子类初始化
2.关键字
(1)super
由来:this是描述本类对象,那么描述父类对象就有了super
this(...)或者super(....)必须出现在一条语句上,否则?
怎么用?
A调用成员变量?B调用构造方法?C调用成员方法?
在继承中,子的构造方法中有,默认super()方法,访问父类构造方法。
(2)final
修饰的范围:类,方法,变量
特点:修饰类?
修饰方法?
修饰变量?
final修饰局部变量为:基本类型:基本数据值不能改变
引用类型:___不能改变,___可以改变。
3重写
特点:在继承中,子类方法与父类完全一样
父中私有方法不能被重写
父类静态方法,子类必须用静态方法重写(子重写父方法时,最好生命一模一样)
四,多态
1.概述,特点
(1)多态中成员访问特点:
A.成员变量
B.构造方法
C.成员方法:编译看左边,运行看右边。
D,静态方法
(2)多态好处:
A.提高代码维性:(由继承保证)------抽象类
B.提高代码的扩展性:(由多态保证)--------接口
(3)对象间转型问题:
向上转型:Fu f = new Zi ();
向下转型: Zi z =(Zi) f; 要求改f必须是能够转换为Z的。
2.抽象类:
(1)概述和特点:
A关键字
B.抽象类不一定有抽象方法,但.......
C.抽象类不能实例化
D.抽象的子类形式:a,b
抽象类的实例化其实是靠具体的子类实现的,是多态的方式。
(2)成员特点:
成员变量:变量或者常亮
构造方法:有
成员方法:
(3)抽象类的意义--------------------------------------------------就是为了重写!!
因此:如果抽象类没有抽象方法,是可以存在的,意义是不让创建对象。
abstract不能与那些关键字共存:
private:冲突?
final:冲突?
tatic:无意义?
3接口:
(1)特点:
对比抽象类.......
(2接口的成员特点:
成员变量:只能是__默认修饰符____;
构造方法:无
成员方法:只能是___默认修饰符____;
所有类都默认继承自一个类:Object
Object 是类层次机构的根类,每个类都是用Object作为超类。
(3)接口意义:--------------------------------------------------------------就是为了添加!!
4抽象类和接口比较:
相同:1.二者继承中许多相似的特点
区别:A.成员区别:
抽象类:
接口:
B.关系区别;
类与类:
继承,单继承,多层继承
类与接口:
实现,单实现,多实现
接口与接口:
继承,单继承,多继承
C.设计理念区别:
抽象类:被继承体现的是“is a” 的关系,抽象类中定义的是该继承体系的共性功能。
接口: 被实现体现的是“like a”的关系,接口中定义的是该继承体系的扩展功能。
总结:加强思维导图练习
按时总结,组织知识网。