Java面向对象特性
1.继承(Inheritance)
继承是面向对象编程的核心机制之一,其作用是在已有类型基础之上进行扩充或改造,得到新的数据类型,以满足新的需要.
语法格式如下:
[<修饰符>] class <类名> [extends<父类名>]{
[<属性声明>]
[<构造方法声明>]
[<方法声明>]
}
2.类之间的关系
1)依赖关系(Dependency):指一个类的方法中使用到了另一个类的对象,此时我们称前者依赖后者.("use-a")的关系
2)聚合关系(Aggregation):指一个类的对象包含(通过属性引用)了另一个类的对象.("has-a")的关系
3)泛化关系(Generalization):表示的是类之间的继承关系(还包括类与接口之间的实现关系以及接口之间的继承关系).("is-a")关系
3.访问控制(access control)
修饰类一般只有:public,default
修饰属性和方法有:public, protected, default,private
4.方法重写(overwrite)
在子类继承父类时,子类可以重写父类的方法.方法重写必须遵守下面的原则:
1)重写方法必须和被重写方法具有相同的方法名称,参数列表和返回值类型
2)重写方法不能使用比被重写方法更严格的访问权限
3)重写方法不允许声明抛出比被重写方法范围更大的异常类型.(可以不抛出异常,或者只能抛出相同的异常)
5.super关键字
子类继承父类时,在子类中可以使用super来引用父类中的成分.在构造方法中使用super()语句,必须位于子类构造方法的第一行.
格式有:
super.<属性名>:访问父类中的属性
super.<方法名>(<实参列表>):访问父类中的成员方法
super(<实参列表>):在子类构造方法中调用父类的构造方法
6.多态(Polymorphism)
多态:把子类对象可以替代父类对象使用
instanceof运算符:用于检测一个对象的真正类型,格式:
<变量名>instanceof<类型>
JDK5.0允许重写方法时修改其返回值的类型,但必须是父类方法返回值类型的子类或实现类类型.
7.方法重载(overload)
在一个类中存在多个同名方法的情况下,使用方法重载.
this(<实参列表>):只能出现在构造方法中,且this()语句如果出现必须位于方法体中代码的第一行.用来调用同一类中的其他重载构造方法.
8.Java对象构造和初始化
语法规则如下:
1)在子类的构造方法中可使用super语句调用父类的构造方法,格式:super(<实参列表>)
2)如果子类的构造方法中既没有显式地调用父类构造方法,也没有使用this关键字调用同一个类的其他重载构造方法,则系统会默认调用父类无参数的构造方法,格式:super()
3)如果子类构造方法中既未显式调用父类构造方法,而父类中又没有无参的构造方法,则编译出错.
Java对象构造和初始化的处理细节如下:
第一阶段:为新建对象的实例变量分配存储空间并进行默认初始化
第二阶段:按下述步骤继续初始化实例变量
1)绑定构造方法参数;
2)如有this()调用,则调用相应的重载构造方法,然后跳转到步骤5;
3)显式或隐式追溯调用父类的构造方法(Object类除外);
4)进行实例变量的显式初始化操作
5)执行当前构造方法的方法体中其余的语句
9.抽象类(abstract class)
抽象方法(abstract method):只给出方法头(包括方法名,形式参数列表,返回值类型及修饰符),而不必给出方法体,即方法实现的细节.格式如下:
[<修饰符>]abstract <返回值类型> <方法名> ([<参数列表>])
注意:
1)包含抽象方法的类必须声明为抽象类,但不包含任何抽象方法的java类也可以声明为抽象类
2)子类可以不全部实现抽象父类,但子类也必须声明为抽象类
3)父类不是抽象类,子类可以添加抽象方法,成为抽象类
4)抽象类可以声明static属性和方法.
10.接口(interface)
格式:
[<modifier>] class <name> [extends<superclass>] [implements<interface>[,<interface>]*] {
declarations *
}
11.嵌套类(Nested Class)
嵌套类分为:使用static修饰的嵌套类称为静态嵌套类(Static Nested Class),非static的嵌套类称为内部类(Inner Class),内部类可以分为:
1)普通的内部类:在Java类中,方法或语句块的外部定义的非static类
2)局部内部类:也称局部类(Local Class),定义在方法或语句块中的类
3)匿名内部类:也称匿名类(Anonymous Class),定义在方法或语句块中,该类没有名字,只能在其所在之处使用一次.
12.断言(assert)
断言机制允许Java开发者在代码中加入一些检查语句,主要用于程序调试目的.功能:在用户定义的boolean表达式(判定条件)结果为false时抛出一个Error对象,其类型为AssertionError.
语法格式:
assert <boolean 表达式>;
执行到assert语句时,如果其后的boolean类型表达式值为false,则程序将抛出AssertionError.
assert<boolean 表达式>:<表达式2>;
断言失败时,系统会自动将<表达式2>的值传递给新创建的AssertionError对象,进而将其转换为一个消息字符串保存起来.
Java面向对象特性
最新推荐文章于 2024-04-09 11:11:36 发布