什么是面向对象?
1.面向对象是一种编程思想。
2.面向对象是一种思考问题的思维方式。
面向对象的出现将复杂的问题简单化。让曾经在过程中的执行者,变成了对象中的指挥者。
如何学习面向对象?
1、掌握一门面向对象语言的语法。
2、熟悉面向对象的设计原则。
3、熟悉面向对象的设计模式。
类与对象
什么是类?
1、类是分类,类别。
2、通过分类,我们可以区别不同的事物种类,
3、所以,类是一组具有相同特性(属性)与行为(方法)的事物集合。
类与对象的关系。
1、类表示一个共性的产物,是一个综合的特征,而对象是一个个性的产物,是一个个体的特征。
2,、类由属性和方法组成,(描述事物的两个特点)
类是事物的描述,对象是该类的实例。在java中通过new创建。
属性:相当于一个个的特征。
方法:相当于人的一个个的行为。
java中定义类的语法:
class 类名 {
属性名称;
返回值类型 方法名称(){
}
}
对象定义的格式:
类名称 对象名称 = new 类名称();
访问对象的属性:对象.属性
访问对象的方法:对象.方法();
写 public时类名和文件名必须一致。通常一致都。void表示没有返回值类型。
new 关键字
1.new 关键字表示创建一个对象。
2.new关键字表示实例化对象。
3.new关键字表示申请内存空间。
在栈内存中没有任何指针指向堆内存的东西就视为垃圾。
成员变量和局部变量的区别
1.成员变量定义在类中,整个类中都可以访问,局部变量定义在函数,语句,局部代码块中,只在所属区域有效。
2.成员变量存在于堆内存的对象中,局部变量位于栈内存的方法中。
3.成员变量随着对象的创建而存在,对象的消失而消失,局部变量随着所属区域的执行而存在,随着所属区域的位数而释放。
4.成员变量都有默认初始化值,局部变量没有默认初始化值。
面向对象三大特性 封装性,继承性,多态性。
封装性
概念:隐藏实现细节,仅对外提供访问接口。
eg:属性,方法,类,组件,模块化,系统级...等的封装。
封装的好处:
1.模块化。
2.信息隐藏。(隐藏实现细节仅对外提供公共的访问方式)
3.代码重用。
4.插件化易于调试。
5.具有安全性。
类的构造方法
什么是构造方法?
就是类构造对象时调用的方法,用于对象的初始化操作。用于对象的初始化工作。
构造方法是实例化一个类的对象时,也就是new时,最先调用的方法。
构造方法的定义
在类中定义,方法名称与类名相同,无返回值。void也不可以。
方法重载
在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
匿名对象
1.匿名对象就是定义一个没有名称的对象。
2.该对象的特点是只能使用一次。
3.该对象会直接在堆中开辟内存空间。
4.该对象使用后会成为垃圾对象,被GC(垃圾回收)回收。
继承性
子类继承父类的特征和行为
1.提高了代码的复用性,
2.让类与类之间产生了关系,给多态提供了前提。
Java中支持单继承,不直接支持多继承,但是对c++中的多继承机制进行了改良。
多态性
1.同一个事件发生在不同的对象上会产生不同的结果
2.一个对象应对着不同的类型。
3.代码体现:父类或者接口的引用指向其子类对象。
多态的好处: 提高了代码的扩展性,前期定义的代码可以使用后期的内容。
多态的弊端: 前期定义的代码不能调用后期子类特有的内容。
多态的前提:
1.必须有关系,继承或者实现
2.要有覆盖
修饰符以及权限
多态成员的特点
1.成员变量
编译时:参考引用型变量所属类中是否有调用成员变量,有编译通过。没,编译失败。
运行时:参考引用变量的所属类中是否调用成员变量,并运行该所属类中的成员变量。
概括:编译和运行都参考等号的左边。
2.成员函数(非静态)
编译时:参考引用型变量所属类中是否有调用的函数,有,编译通过,没有,编译失败。
运行时:参考的是对象所属的类中是否有调用的函数。
概括:编译看左边,运行看右边。
3.静态函数
编译时:参考引用型变量所属的类中是否有调用的函数,有编译通过,没,编译失败。
运行时:参考的是对象所属的类中是否有调用的函数。
概括:编译看左边,运行看右边。
什么是访问修饰符?
就是对某个定义域的权限控制。