工具/原料
JDK、eclipse、android SDK、ADT
一、面向对象之内部类
内部类是定义在一个类的内部,或方法内部,或局部代码块内部的类。
1、非静态内部类:
①非静态内部类对象,依赖与外部类对象存在。
②非晶态内部类中不能定义静态成员。
class A{
class Inner{
}
}
A a=new A();
A.Inner inner=a.new Inner();
创建内部类对象,需要先创建外部类对象,用外部类对象,创建内部类对象。
2、静态内部类:
class A{
static class Inner{
}
}
A.Inner inner=new A.Inner();
静态内部类属于类,内存中只有内部类一个Inner对象,不存在A类。
3、局部内部类:
①局部内部类定义的类型,只能在局部代码块中使用。
②当局部内部类创建后,对象的内存地址,可以从方法返回到外面。
class A{
父类型 a(){
class Inner implements或extends 父类型{
}
Inner inner=new Inner();
return inner;
}
父类型 a=a();
}
4、匿名内部类:(局部匿名内部类):
父类a=new 父类(){
局部内部类中,使用外面的局部变量,该变量必须事先声明final。
二、面向对象之三大特性:封装、继承、多态的含义
1、封装:
封装就是尽可能的隐藏对象内部细节,对外形成一道边界,只保留有限的接口和方法与外界进行交互。
总结起来一句话:属性私有化,方法公开化
2、继承:
1、继承发生在子类与父类之间。
2、使用extends关键字。
3、子类可以继承父类非私有的方法。
4、java中,允许多层继承,不可以多重继承。
5、存在方法的重写。
3、多态:
java的多态体现在两个方面:由于方法重载实现的静态多态性【编译时多态】和方法重写实现的动态多态性【运行时多态】
1、编译时多态:在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调动相应的方法。
2、运行时多态:由于子类继承了父类所有的属性【私有属性除外】所以子类对象可以作为父类对象使用。程序中凡是用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。
3、继承关系中,多个子类可以当作父类来处理,可以互相转换,然后不同类的对象根据不同的行为方式,调用不同的方法,多态消除类型之间的耦合关系。
重写和重载的含义:
方法重写:
子类对父类的方法进行重写编写。如果在子类中的方法与其父类具有相同的方法名、返回类型和参数表,我们说该方法被重写。
方法重载:
1、方法名相同;
2、方法的参数类型,个数顺序至少有一项不同;
3、方法的返回类型可以不相同;
4、方法的修饰符可以不相同;
5、main方法也可以被重载。
向上转型和向下转型的含义:
向上转型:
子类对象转型成父类类型,转为父类型之后只能调用父类定义的通用方法或成员,若想调用子 类扩展的成员或方法,需要向下转型。
向下转型:
已经转为父类型的子类对象,转回成子类型,需要强制转型。
三、Android安卓基础之界面控件和Activity
1、界面控件:
控件(Control)包括:文本(TextView)、输入框(EditText)、按钮(Button)、多选钮(CheckBox)、单选钮(Radio)等。并且这些界面控件都继承界面控件父类(android.view.View),而且这些子类都已经被android系统在显示界面时自动创建出了对象。
2、Activity:
活动,理解成窗口,一般情况下,一个窗口只显示一个界面。
启动窗口时,系统“自动”创建窗口对象,并调用onCreate()方法。
在onCreate()方法中,设置在窗口中显示的界面用setContentView(指定界面)
启动另一个窗口:
1、Intent intent=new Inntent(当前窗口对象,目标窗口类);
2、startAcitivty(intent);
注意事项
一定要深刻理解面向对象中封装、继承、多态的含义,不只是对于面试有利,在今后的编程之路乃至梦想都会有利的。
内部类在android中也应用广泛,应该熟练掌握。