---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
- 一切都是对象
- 人们解决现实中问题的一种思维模式,思想。万物皆对象
- 日后开发:当你想完成一个功能的时候,找有没有可以完成这个功能的对象
- 如果有,建立这个对象,指挥这个对象做事情
- 如果没有,自己创建对象,指挥这个对象做事情
- 面向对象的三个特征:封装性,继承性,多态性
- 类与对象
- 类(class):可以理解为是构造对象的一个蓝图或者模板,是抽象的概念;反过来说,对象是以类为模型创造的具体实例,是对类的一种具体化、形象化。
- 类:对生活中事物的描述。
- 对象:对类的具体实现,是实实在在存在的实体。
- 成员变量的存储情况
- 跟随对象,在堆内存中存储
- 堆中的成员变量,都有默认值
- 跟随对象的消失而消失
- 成员变量和局部变量的区别
- 成员变量跟随对象,在堆内存中存储
- 局部变量,跟随方法,在栈内存存储
- 成员变量都有默认值
- 局部变量,必须手动赋值
- 成员变量跟随对象的消失而消失,生命相对较长
- 局部变量,跟随方法的弹栈消失而消失,生命相对较短
- 成员变量作用于整个类中
- 局部变量作用于定义的大括号中
- 匿名对象
- 简述:所谓匿名对象,就是创建的对象没有名字,直接使用。
- 使用方式:
- 使用方式一:当对对象的方法只调用一次时,可以使用匿名对象来完成,这样写比较简化。如果对一个对象进行多个成员调用,必须给这个对象起个名字
- 使用方式二:可以讲匿名对象作为实际参数进行传递,从而可以不用在main方法中创建一个变量,提高了编程效率,减少了代码书写。
- 封装
- 隔离变化
- 提高安全
- 提高维护性
- 面向对象的三大特征之一
- 将不需要对外提供的内容隐藏起来
- 把属性都隐藏,提供公共方法对其访问
- private :
- 私有,权限修饰符:用于修饰类中的成员(成员变量,成员函数)。
- 私有只在本类中有效。
- 将age私有化以后,类以外即使建立了对象也不能直接访问。
- 但是人应该有年龄,就需要在Person类中提供对应访问age的方式。
- 注意:私有仅仅是封装的一种表现形式。
- 之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句。对访问的数据进行操作。提高代码健壮性。
- 示例:
class Person { private int age; public void setAge(int a) { if(a>0 && a<130) { age = a; speak(); } else System.out.println("feifa age"); } public int getAge() { return age; } private void speak() { System.out.println("age="+age); } } class PersonDemo { public static void main(String[] args) { Person p = new Person(); //p.age = -20; p.setAge(-40); //p.speak(); } }
- 构造函数与构造代码块
- 对象一建立就会调用与之对应的构造函数。
- 构造函数的作用:可以用于给对象进行初始化。
- 构造函数的小细节:
- 当在类中自定义了构造函数后,默认的构造函数就没有了
- 当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。
- 构造函数和一般函数在写法上有不同。
- 在运行上也有不同。
- 构造函数是在对象一建立就运行。给对象初始化。
- 而一般方法是对象调用才执行,给是对象添加对象具备的功能。
- 一个对象建立,构造函数只运行一次。
- 而一般方法可以被该对象调用多次。
- 什么时候定义构造函数呢?
- 当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。
- 构造代码块:
- 作用:给对象进行初始化。对象一建立就运行,而且优先于构造函数执行。
- 和构造函数的区别:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化。
- 构造代码快中定义的是不同对象共性的初始化内容。
- this
- 表示本类对象的引用,换句话说,哪个对象调用的,this就表示哪个对象
- 区分类中的成员变量和方法内部的局部变量重名的情况
- this()语句,可以在构造方法之间进行调用,只能放在第一行
- static
- 成员变量,被static修饰,变成所有对象的共享数据了
- 如果我们的程序中,假定有一个数据,是所有人共享的
- 静态修饰的成员变量,可以直接类名调用
- 被静态修饰的成员变量和成员方法,随着类加载而加载,方法区
- 静态不能直接访问非静态,原因是静态的成员先于对象存在于内存中
- 什么时候使用静态修饰呢?
- 当对象中出现了共享数据的时候,就将这个成员变量使用static修饰
- 什么时候将方法定义成静态的呢,当这个方法没有访问过对象的特有数据(非静态的),这个方法定义成静态
- 静态使用注意事项
- 静态不能直接访问非静态
- 静态方法中不能写this,super
- 由于静态的声明较长,建议少用
- 实例变量(对象,非静态)和类变量(static)的区别:
- 实例变量,跟随对象堆内存存储
- 类变量,是随类的加载而加载
- 实例变量,类变量,都有默认值
- 实例变量,只能对象调用,类变量即可对象调用,也可以类名调用(强烈推荐)
- 实例变量,跟随对象存储堆内存,比类变量进内存要晚些
- 类变量优先于对象存在于内存中,生命周期最长
- 补充:
| boolean | false |
|---|---|
| char | ‘\u0000’ null |
| byte | (byte)0 |
| short | (short)0 |
| int | 0 |
| long | 0L |
| float | 0.0f |
| double | 0.0d |
- 注意:这里是指基本类型作为类成员变量时有默认值,若在方法中出现的局部变量,未初始化是不能引用的(编译不通过)
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
本文介绍了面向对象编程的基本概念,包括类与对象的关系、成员变量的存储情况、匿名对象的使用方式、封装性的实现方法等内容,并详细解释了构造函数与构造代码块的作用。
2603

被折叠的 条评论
为什么被折叠?



