继承,封装,多态
2016-02-27 16:17
183 查看
一、继承:(面向对象的三大特征之一{继承,封装,多态})
1)定义:在现有基础上,通过增加一些新方法,或者对已有的方法重写而产生一个新的类型。Java当中,我们写的每一个类都在继承,如果在写一个类的时候没有明确的指出继承哪个类,那么就继承于Object这个基类。
2)类的分类:
A、类:用class定义的,没有抽象方法的类;
B、抽象类:用abstract class定义的类,可以有抽象的方法,也可以没有抽象的方法;
C、接口:用interface定义的类;
注:a:在这三种类型之间存在下面的继承规律:
类可以继承类,抽象类,接口;
抽象类可以继承类,抽象类,接口;
接口只能继承接口。
b:类是单继承多实现的。
二、多态:
注:1、继承是多态可以实现的基础;简单的理解多态就是一个类型的不同的表现形式,比如说考试题,可以分为单选题,多选题等等。
2、绑定:将一个方法调用同这个方法所属的主体关联起来叫做绑定分为后期绑定和前期绑定。
前期绑定:在程序运行之前进行绑定,由编译器和连接程序实现,又叫做静态绑定,比如:static,final,private方法。
后期绑定:就是在程序运行期间根据对象的类型进行绑定。
三:补充、重载(overloading)和重写(overriding)
方法的型构:包括方法的名称,参数,参数的个数,类型,以及参数出现的顺序,但是不包括方法的返回类型,访问权限修饰符,以及acstract, static,final等修饰符。
Eg: 以下两个不同型构的方法:
public void f1(int i, String s){
//do something
}
public void f2(String s, int i){
//do something
}
重写:(也叫覆盖)是在继承的情况下子类出现了一些和父类相同型构的方法,这是多态必须经历的一个步骤。
注:重写方法不能比被重写方法更严格的访问权限。子类覆盖后的方法抛出的异常不能比父类更多,重写是类与类之间的关系。
重载:在一个类中定义一个具有相同名称,但是型构不同的方法。重载是方法与方法之间的关系。
四:final,finally,finalize的区别
Final用于声明属性,方法和类,分别表示属性不可改变,方法不可覆盖,类不可以继承。
Finally是异常处理语句结构的一部分,表示总是执行。
Finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收的对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。
五、Static
如果一个类的成员被声明为static,他就能够在类的任何对象创建之前被访问,而不用引用任何对象。
注:1)声明为static的变量实质上就是个全局变量,当声明一个对象的时候,并不产生static变量的拷贝,而是该类所有的实例变量公用的一个static变量。
2)声明为static的方法仅能调用其他的static方法
3)仅能访问static数据
4)不能以任何方式引用this或super.
Eg:
package basic;
public class UserStatic {
static int a = 3;
static int b;
static void meth(int x){
System.out.println("x =" + x);
System.out.println("a =" + a);
System.out.println("b =" + b);
}
static{
System.out.println("Static block initialized");
b = a * 4;
}
public static void main(String[] args){
meth(42);
}
}
运行结果:
Static block initialized
x =42
a =3
b =12
注:1)static成员是不能被其所在的class创建的实例访问的。
2)如果不加static修饰的呃成员是对象成员,也就是归每个对象所有的。
3)加static修饰的成员是类成员,就是可以由一个类直接调用的,为所有对象共有的。
六、Object类里的方法:(共12个方法)
private static native void registerNatives();
public final native Class<?> getClass();
public native int hashCode();
public boolean equals(Object obj)
protected native Object clone() throws CloneNotSupportedException;
public String toString() ;
public final native void notify();
public final native void notifyAll();
public final native void wait(long timeout) throws InterruptedException;
public final void wait(long timeout, int nanos) throws InterruptedException
public final void wait() throws InterruptedException
protected void finalize() throws Throwable
1)定义:在现有基础上,通过增加一些新方法,或者对已有的方法重写而产生一个新的类型。Java当中,我们写的每一个类都在继承,如果在写一个类的时候没有明确的指出继承哪个类,那么就继承于Object这个基类。
2)类的分类:
A、类:用class定义的,没有抽象方法的类;
B、抽象类:用abstract class定义的类,可以有抽象的方法,也可以没有抽象的方法;
C、接口:用interface定义的类;
注:a:在这三种类型之间存在下面的继承规律:
类可以继承类,抽象类,接口;
抽象类可以继承类,抽象类,接口;
接口只能继承接口。
b:类是单继承多实现的。
二、多态:
注:1、继承是多态可以实现的基础;简单的理解多态就是一个类型的不同的表现形式,比如说考试题,可以分为单选题,多选题等等。
2、绑定:将一个方法调用同这个方法所属的主体关联起来叫做绑定分为后期绑定和前期绑定。
前期绑定:在程序运行之前进行绑定,由编译器和连接程序实现,又叫做静态绑定,比如:static,final,private方法。
后期绑定:就是在程序运行期间根据对象的类型进行绑定。
三:补充、重载(overloading)和重写(overriding)
方法的型构:包括方法的名称,参数,参数的个数,类型,以及参数出现的顺序,但是不包括方法的返回类型,访问权限修饰符,以及acstract, static,final等修饰符。
Eg: 以下两个不同型构的方法:
public void f1(int i, String s){
//do something
}
public void f2(String s, int i){
//do something
}
重写:(也叫覆盖)是在继承的情况下子类出现了一些和父类相同型构的方法,这是多态必须经历的一个步骤。
注:重写方法不能比被重写方法更严格的访问权限。子类覆盖后的方法抛出的异常不能比父类更多,重写是类与类之间的关系。
重载:在一个类中定义一个具有相同名称,但是型构不同的方法。重载是方法与方法之间的关系。
四:final,finally,finalize的区别
Final用于声明属性,方法和类,分别表示属性不可改变,方法不可覆盖,类不可以继承。
Finally是异常处理语句结构的一部分,表示总是执行。
Finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收的对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。
五、Static
如果一个类的成员被声明为static,他就能够在类的任何对象创建之前被访问,而不用引用任何对象。
注:1)声明为static的变量实质上就是个全局变量,当声明一个对象的时候,并不产生static变量的拷贝,而是该类所有的实例变量公用的一个static变量。
2)声明为static的方法仅能调用其他的static方法
3)仅能访问static数据
4)不能以任何方式引用this或super.
Eg:
package basic;
public class UserStatic {
static int a = 3;
static int b;
static void meth(int x){
System.out.println("x =" + x);
System.out.println("a =" + a);
System.out.println("b =" + b);
}
static{
System.out.println("Static block initialized");
b = a * 4;
}
public static void main(String[] args){
meth(42);
}
}
运行结果:
Static block initialized
x =42
a =3
b =12
注:1)static成员是不能被其所在的class创建的实例访问的。
2)如果不加static修饰的呃成员是对象成员,也就是归每个对象所有的。
3)加static修饰的成员是类成员,就是可以由一个类直接调用的,为所有对象共有的。
六、Object类里的方法:(共12个方法)
private static native void registerNatives();
public final native Class<?> getClass();
public native int hashCode();
public boolean equals(Object obj)
protected native Object clone() throws CloneNotSupportedException;
public String toString() ;
public final native void notify();
public final native void notifyAll();
public final native void wait(long timeout) throws InterruptedException;
public final void wait(long timeout, int nanos) throws InterruptedException
public final void wait() throws InterruptedException
protected void finalize() throws Throwable
相关文章推荐
- python学习笔记(一)
- scala学习
- Codeforces Round #343 (Div. 2) Problem C——Famil Door and Brackets
- MapReduce - Hadoop Implementation
- 导航控制器下控件偏移问题
- AWS——扩展linux根目录
- 安装mysql
- Uva Tour1347
- iOS,@property,@synthesize, nonatomic,atomic,strong,weak,copy,assign,retain解析
- baseAction<T>一例
- 递归和传递
- 用Android Studio 运行ndk 程序
- linux 下shell脚本执行多个命令的方法
- NPOI之Excel——合并单元格、设置样式、输入公式
- 请把不听话的【return】关进【class】这个笼子
- 【CodeVS1688】求逆序对
- 51nod 1376 最长递增子序列的数量 树状数组
- C 标准库 —— scanf(fflush(stdin))
- 米转换经纬度
- Remove Duplicates from Sorted Array II