1.什么是类和对象?EVERYTHING IS OBJECT(万物皆对象)所有的事物都有两个方面:
2.为什么要使用面向对象?首先,面向对象符合人类看待事物的一般规律。 对象的方法的实现细节对其他对象是屏蔽的。 我们通过类来看待对象,类是对象的抽象。 其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。 对象之间的耦合性一定要低。这样才能使每个对象本身做成最好的。 对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。 实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。可复用性是OOP的基础。 3.面向过程思想和面向对象思想比较?面向过程的思想:由过程、步骤、函数组成,以过程为核心; 面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。 4.实例变量和局部变量的比较
5.介绍一下对构造函数的理解构造方法是当用类生成对象时,系统在生成对象的过程中利用的方法。
6.面向对象方法的重载(Overloading)和覆盖(Overriding)Overloading在一个类中可以定义多个同名方法,各个方法的参数表一定不同。但修饰词可能相同,返回值也可能相同。 overloading是编译时的多态。 Overriding指子类与父类之间的同名方法,参数表顺序一定相同,但修饰符和返回值可能不同,构造函数无法覆盖。Overriding是运行时多态。
7.this关键字This表示当前对象。 特别注意:用this调用其他构造方法时,this必须为第一条语句,然后才是其他语句。
8.面向对象三大特性之封装Java中提供4个修饰符来进行对象属性和方法的访问权限控制:
9.面向对象三大特性之继承
当构造一个对象的时候,系统先构造父类对象,再构造子类对象。构造一个对象的顺序:(注意:构造父类对象的时候也是这几步)
10.面向对象三大特性之多态多态指的是编译时类型不变化,而运行时类型变化。 多态分两种:
11.修饰符staticstatic定义的是一块为整个类共有的一块存储区域,其发生变化时访问到的数据都是变化之后的。其变量可以通过类名去访问:类名.变量名。与实例对象访问变量为等价的。 static 可修饰属性、方法和代码块:
一般情况下,主方法是静态方法,所以可调用静态方法,主方法为静态方法是因为它是整个软件系统的入口,而进入入口时系统中没有任何对象,只能使用类调用。 覆盖不适用于静态方法,静态方法不可被覆盖。(允许在子类中定义同名静态方法,但是没有多态,严格的讲,方法间没有多态就不能称为覆盖。
12.修饰符finalfinal可修改类、属性、方法:
对于在构造方法中利用final进行赋值的时候,此时在构造之前系统设置的默认值相对于构造方法失效。 常量(这里的常量指的是实例常量:即成员变量)赋值:
局部变量可以随时赋值。 注:如果一个方法前有修饰词private或static,则系统会自动在前面加上final。即private和static方法默认均为final方法。Java中使用final和static组合,声明常量标识符(固定语法)。final并不涉及继承,继承取决于类的修饰符是否为private、default、protected还是public。也就是说,是否继承取决于这个方法对于子类是否可见。
13.抽象修饰符abstract
14.接口和抽象类的比较
15.内部类注:所有使用内部类的地方都可以不用内部类,使用内部类可以使程序更加的简洁,便于命名规范和划分层次结构。内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。 内部类同时具有成员和类的特性(特性不冲突)。 内部类的分类:
a.成员内部类作为外部类的一个成员存在,与外部类的属性、方法并列。 内部类和外部类的实例变量可以共存。在内部类中访问实例变量:this.属性,在内部类访问外部类的实例变量:外部类名.this.属性。 成员内部类的优点: ⑴内部类作为外部类的成员,可以访问外部类的私有成员或属性。(即使将外部类声明为PRIVATE,但是对于处于其内部的内部类还是可见的。) ⑵用内部类定义在外部类中不可访问的属性。这样就在外部类中实现了比外部类的private还要小的访问权限。 成员内部类不可以有静态属性。 建立内部类对象时应注意: 在外部类的内部可以直接使用inner s=new inner();(因为外部类知道inner是哪个类,所以可以生成对象。)而在外部类的外部,要生成(new)一个内部类对象,需要首先建立一个外部类对象(外部类可用),然后在生成一个内部类对象。 Outer outer = new Outer; Outer.Inner in=outer.new Inner(); 错误的定义方式: Outer.Inner in=new Outer.Inner()。 注意:当Outer是一个private类时,外部类对于其外部访问是私有的,所以就无法建立外部类对象,进而也无法建立内部类对象。 b.局部内部类在方法中定义的内部类称为局部内部类。与局部变量类似,在局部内部类前不加修饰符public和private,其范围为定义它的代码块。 注意:局部内部类不仅可以访问外部类实例变量,还可以访问外部类的局部变量(但此时要求外部类的局部变量必须为final)?? 在类外不可直接生成局部内部类(保证局部内部类对外是不可见的)。 要想使用局部内部类时需要生成对象,对象调用方法,在方法中才能调用其局部内部类。 c.静态内部类注意:前三种内部类与变量类似,所以可以对照参考变量,静态内部类定义在类中,任何方法外,用static定义。 静态内部类只能访问外部类的静态成员。 生成(new)一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。 静态内部类的对象可以直接生成:Outer.Inner in=new Outer.Inner(); 而不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个顶级类。 静态内部类不可用private来进行定义。 注意:当类与接口(或者是接口与接口)发生方法命名冲突的时候,此时必须使用内部类来实现。用接口不能完全地实现多继承,用接口配合内部类才能实现真正的多继承。 d. 匿名内部类匿名内部类是一种特殊的局部内部类,它是通过匿名类实现接口。 注:一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类,没有类名,根据多态,我们使用其父类名。 因其为局部内部类,那么局部内部类的所有限制都对其生效。 匿名内部类是唯一一种无构造方法类。 匿名内部类在编译的时候由系统自动起名Out$1.class。 如果一个对象编译时的类型是接口,那么其运行的类型为实现这个接口的类。因匿名内部类无构造方法,所以其使用范围非常的有限。 15、运行时异常与普通异常异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 Throwable是所有Java程序中错误处理的父类,有两种资类:Error和Exception。
16、Java命名规范必须以英文字母、下划线(’_’)或’$’开始,其余可以有数字但不允许包含空格,且组合后的名称不能是Java关键字或保留字。
|
|
来自: 二月石桥 > 《安卓应用APP开发技术研究》