------- android培训、java培训、期待与您交流! ----------
面向对象(对象后的括号不能丢,调用对象的功能时,即使对象没有参数类型,后面的括号也不能丢) | 四个特点:抽象,多态,封装,继承 | |
对象 | 个体或具备一定功能的个体,存储在堆内存中,以new的形式产生 | |
类 | 对个体事物具备的共性的描述,class定义的类 | |
class abc int long; String color="red"; void run(){} | 定义一个名称为abc的类,类中包含该事物的一些属性和行为,功能等,假设有long=5,color=red,行为功能名称为run | |
abc x=new abc() | 按照abc类,在堆内存中生成一个名称为x(名称存储在栈内存中,x为类类型变量,指向对象)的对象,该对象具备abc类的属性,功能,行为等 | |
x.long=4 | 对象.对象成员,该形式来控制对象的属性和行为,这里将对象长度更改为4 | |
x.run | 控制对象运行行为 | |
new abc() | 匿名对象 | |
匿名对象的使用 | 当对对象的方法只调用一次时,可以使用匿名对象来简化代码,即:new abc().run 当需要调用对象的多个成员时,必须给对象起名字; 匿名对象还可以用来传递参数,减少引用,简化代码 | |
类中可以没有函数 | 用作调用对象属性 | |
成员变量 | 类下定义的一级变量,作用于整个类,存储于堆内存中,因对象的存在而存在,初始化值为0,null | |
局部变量 | 作用于函数或者某语句,存在于栈内存,没有初始化值,必须定义才能使用 | |
封装 encapsulation 隐藏属性和实现细节,仅对外提供公共访问方式 | 好处 | 隔离变化,安全性,重用性,便于使用 |
原则 | 不需要对外提供的内容,实现细节 隐藏属性,提供公共访问 | |
private | 关键字:权限修饰符,用于修饰类中的成员(变量或函数)只在本类中有效,与public是相对应的。 | |
类中属性一般需要封装 | 提供访问其的公共方法,而不是直接访问 在方法中可以对其加以限制,编辑条件等 | |
构造函数 | 特点 | 与类同名,没有返回值,不用定义返回值类型,多个以重载方式存在 |
作用 | 给对象进行初始化,当发现事物具备一些特性或行为,那么将这些定义在构造函数中 | |
细节 | 未定义构造函数,系统会自动加上一个空参数的构造函数,权限与类相同,若定义了,则不会。 | |
运行 | 对象一建立便执行,仅执行一次 | |
构造代码块 | 特点 | 没有名称,直接用大括号括起来 |
运行 | 优先于构造函数,且作用于所有建立的对象 |
主函数 | public static void main(String[] args) | 格式固定,只有args可以任意更改 |
关键字含义 | public:表示该函数的访问权限是最大的 static:主函数是静态的,随着类的存在而存在 void:主函数没有具体的返回值 main:主函数的名称,固定 String[] args:参数类型为字符串数组类型 | |
jvm调用 | 传入的是 new String[0] |
建立对象的内存过程 | 1,因为new一个对象需要用到类名.class文件,虚拟机会先找到class文件加载进内存 2,执行该类的static代码块,对类进行初始化 3,在堆内存中开辟空间,分配内存地址 4,在堆内存中建立对象的特有属性,并进行默认初始化(0,null等) 5,对对象的属性进行显示初始化(即如果有的话,类似于赋值:int x=1) 6,执行类中的构造代码块,给对象初始化 7,对对象进行相应的构造函数初始化 8,将内存地址值赋给栈内存中的建立的类变量名 |