您的位置:首页 > 编程语言 > Java开发

java面向对象知识点总结

2017-05-23 11:58 162 查看
重载

同一个类中,方法名相同,参数列表不同的方法称重载

注意:  同一个类
方法名相同
参数列表不同--参数类型不同,参数个数不同,参数顺序不同
与访问的修饰符无关
与返回值无关
与抛出的异常无关

重写

在具有继承关系的子类中,同名、同参,同返回类型。子类修饰符不能小于父类修饰符。子类抛出的异常不能比父类更广
在子类中
方法名相同
参数列表相同
返回类型相同
访问修饰符不能比父类更严格
抛出的异常不能比父类更广泛

多态的三种表现形式

1.重写  

2.父类指针指向子类对象 --   A a = new B(); A是B的父类

3.接口指向实现类   --spring的controller层和service层依赖注入

构造方法

构造方法是最先执行的方法(但是晚于静态代码块和非静态代码块)

在具有继承关系的子类中,子类的构造方法第一行默认的super()。调用父类的构造方法

如果父类有多个构造方法,则子类构造方法中需要指定确定的父类构造方法。编译完成后,

先执行父类的构造方法。然后执行子类的构造方法(即子类的构造方法第一行是父类的构造方法)

抽象类/接口没有构造方法。因为它们不需要被实例化

抽象类可以有构造方法。只不过没有意义

抽象类和方法

有抽象方法的一定是抽象类。抽象类不一定有抽象方法。只不过这个时候这个类作为一个“框框的存在”

接口

接口中定义的属性和方法默认访问级别都是Public。如果实现了该接口,那么必须重写所有的方法。如果不想

重写方法,那么将这个类定义为抽象类,不想实现的方法定义为抽象方法即可。

一个类可以实现多个接口

一个接口可以继承抖个接口

一个类可以同时继承一个别的类,实现一个或者多个的接口。但是extends关键字要在前面

接口不能实现接口

接口就是一个特殊的抽象类-“干尸类”。里面所有的方法都是没有方法体的(抽象的)。

接口和抽象类的区别

接口是用来实现的。抽象类是用来继承的

接口可以继承别的多个接口。组成一个新的接口

抽象类可以继承一个别的类。或实现一个或者多个的接口

接口是一个100%的抽象类。里面的所有方法都是没有方法体的

抽象类可以包含非抽象的方法,也就是说可以给出某一些方法的实现

接口一般处于代码的最底层,作出一些规定。而接口之上一层抽象类层,对接口进行第一次实现。把不可能一次完成

的方法交由自己的子类实现。

抽象类可以有构造方法。而接口不可以有构造方法

接口中定义的变量只能为public static final,而且会默认增加

java中的异常

程序执行过程中意想不到的情况

java中,异常是以类的形式封装的。异常分为 Exception 和 error

Checked Exception 受检异常 编译时能被java编译器检测到的异常。

RuntimeException之外的Exception都是受检异常,受检异常必须在编译时进行处理

Unchecked Exception 非受检异常  RuntimeException之外的所有子类异常  error异常

方法上面抛异常 throw 异常类型,方法内部抛用 throws 异常对象

throw语句后面不能有别的语句。否则会出现编译错误"unreachable statement"

java各类修饰符应用对象

java中外部类不能被private和protect修饰。只能被public、默认、abstract、final修饰

对于内部类,可以修饰它的修饰符public、缺省、private、protect、abstract、final、static

对于类的声明来说,final和abstract是冲突的两个概念,不能既是final也是abstract

final修饰的类不能被继承 

final修饰属性说明这个属性的值不可被更改  

final修饰方法的时候表示不能被子类重写

对于方法的参数的修饰符仅仅可以用final,表示此参数只能用来为方法内的参数赋值而且本身不能被修改

对于属性变量,可以声明(但不赋初试值)。 局部变量,则声明的时候可以不赋值,但是第一次使用之前必须赋值(局部变量一般是声明的时候同时赋值)

java中常量是final决定的。而不是final static

如果final修饰的是一个引用类型的变量(一个句柄)。表示该变量一旦被分配一个对象后就不能在引用别的对象。可以改变所引用对象的内容

final FinalClass fc = new FinalClass();

fc = new FinalClass();//这句会编译出错。fc不能在引用其他类型的对象

final是唯一可以用于方法内部的局部变量修饰符

注1:

一个方法中的局部变量不能用static修饰。即使这个方法也是static修饰的方法。因为static是与类而不是类的实例相关的概念。方法内部的变量会随着

方法的推出而被撤销。因此一个方法体中声明的局部变量是不能被static修饰的。通过一个static的方法,不仅可以访问其中定义的局部变量,还可以访问

类中定义的static属性。如果要访问非static属性。则只能通过类实例来访问

注2:

static和非static方法的调用方式不同。对非static方法的调用在运行期间决定的,而对static方法的调用则发生在编译期。一个非static方法可以调用另一个

static方法,但是static方法不能调用非static方法。

注3:

一个static方法不能重写为一个非static方法。只能被重写为一个static方法。但是可以被overlaod为一个非static方法。

注4:

静态代码块不是一个方法。只是一个static修饰符加一个方法体(一对大括号的一组语句)。静态代码块主要用于初始化。该代码块仅被执行一次。

即在构造函数前执行。而且只执行一次。如果继承的父类里有静态代码块。会先执行父类的。但是子类的静态代码块要先于父类的构造函数。

如果一个类中存在多个静态代码块,那么其运行次序取决于在类中定义的次序。(排在前面的先执行)

注5:

非static代码块也不是一个方法。每当类创建实例的时候,非静态代码块获得执行,其运行在父类构造器之后,自己的构造器之前。

如果一个类中存在多个非静态代码块,那么其运行次序取决于在类中定义的次序。(排在前面的先执行)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面向对象 java