Java学习(五)面向对象

一、面向对象

1、区别于面向过程。面向对象知道要描述的具体结果。

2、面向对象三大特征:

(1)封装性:对外部不可见

         实现:用关键字public或private。

(2)继承:扩展类的功能

          实现:用关键字extend实现。

          限制:只允许单继承,不能直接访问父类的私有成员。需要getset方法进行访问

(3)多态:方法的重载、对象的多态。

            方法的重载:第三块

            对象的多态:第二块

二、类的创建及类与对象的关系

1、类相当于C或C++中的函数功能。

      其中,声明一个类需要通过一个 关键字class。格式为:

                    class  类名称{属性 方法}

2、抽象类包含一个抽象方法的类。

     格式为:

     abstract class 类名称{方法、属性抽象方法}     

      其中,抽象方法必须用abstract,且是声明而未被实现的方法。

       抽象类也不能直接被实例化 ,要通过其子类进行实例化。抽象类被子类继承,非抽象子类必须重写抽象类中的抽象方法。

3、接口

(1)定义:一种特殊的类,里面由全局常量和公共抽象方法组成。

(2)格式: interface 接口名称{全局常量 抽象方法} 

(3)实现:通过子类,使用关键字implements,可以是多实现。

(4)一个子类可以同时继承抽象类和实现接口。

(5)一个接口不能继承一个抽象类,可以通过extends 关键字同时继承多个接口,实现接口的多继承。

4、对象是对类的实例化。对象的多态性:

向上转型:程序自动完成 :父类  父类对象 = 子类实例

向下转型:强制类型转换 :子类  子类对象=(子类)父类实例

5、创建对象的方式:

(1)声明:类名 实例名=null;

(2)实例化操作:实例名=new 类名();

(3)声明+实例化:类名 实例名 =new 类名();

 注意:类名 实例名相当于开辟了一个栈内存,使用new开辟堆内存空间,初值为0 或空。Java是在堆内存存放具体的数据。

(4)匿名对象:没有名字的对象,在程序中只使用一次。格式为:

                     new 类名().方法();

6、构造方法:名称必须与类名一致,无返回值类型,之前未声明也可以直接使用。格式为:

                     访问修饰符 类名称(){语句}

         注意1: 构造方法主要是为类中的属性初始化。每个类实例化后均会调用构造方法,若没有构造方法,程序在编译时会自动创建一个无餐的构造方法。构造方法可重载。

         注意2:构造方法实例化时, 先调用父类的构造方法,后调用子类的构造方法。 

三、方法创建和重载、递归调用

1、方法定义为可重复调用的代码段,在类中定义。

2、方法格式:

                     访问修饰符  返回值类型  方法名(){方法主体}

其中访问修饰符可以为public或private,返回值类型除了void其余均需返回值。

3、方法的重载:方法名称相同,但是参数的类型和个数不同,通过传递参数的

个数和类型不同来完成不同的功能。

     注意:区别重写。重写是在子类中重新定义父类中同名的方法。定义时,注意方法名称、返回值、参数均相同。

                重写时,不能有比父类更严格的访问限制。其中 private<default<public。什么都不写 默认为default。

4、方法的递归调用:自己调用自己。

5、方法的引用传递:

例子:

四、关键字

1、this:用于 表示类中的属性和调用方法、调用本类中的构造方法、表示当前对象。可使用快捷键快速创建,source+generate getters and setters,sellect all。

2、static关键字

(1)声明的是全局属性、直接通过类名调用

(2)只能访问static的属性和方法

3、extends

(1)格式为:

                         class  子类 extends 父类 {}

(2)例子:

4、super关键字

(1)用于重写。格式为 super.父类方法名称();

(2)可用于表示方法从父类继承而来。

5、final关键字

 Java中的完结器。可用于表示类、方法、属性。用于类表示不能被继承,用于方法表示不可被重写,用于属性表示不可被修改。

6、instance of关键字

(1)判断一个对象到底是不是一个类的实例

7、泛型(Generic)

(1)JDK1.5之后新增的功能。

(2)可用于解决数据类型的安全性问题,通过类声明的时候用一个标识表明类中的某个属性的类型或者是某个方法的 返回值及参数类型。

(3)格式:

               访问权限 class 类名称<泛型1,泛型2....>{属性 方法}

(4)对象的创建

         类名称<具体类型>  对象名称=new 类名称<具体类型>();

(5)可以在构造方法中设置泛型。

注意不能使用con作为类名,con在Java中属于关键字。

(6)设置多个泛型,在<>中添加即可。

(7)通配符:

(8)JDK1.5之后可以声明泛型类和泛型接口,声明泛型接口和声明泛型类的语法类似,也是在接口后面名称加上<T>。格式为:interface 接口名称<泛型标识>{}

(9)泛型方法,可以定义泛型参数,此时,参数的类型就是传入数据类型。格式为:

            访问权限 < 泛型标识>   泛型标识 方法名称([泛型标识 参数名称])

 

(10)在使用泛型 方法的时候,可以传递或返回一个泛型数组。

8、throws关键字

(1)定义一个方法的时候可以使用throws 关键字声明,使用throws声明的方法表示此方法不处理异常,抛给方法的调用者处理。

(2)格式:

                   public void tell() throws Exception{}

(3)

(4)throws关键字抛出一个异常,抛出的时候直接抛出异常类的实例化对象即可。

(5)自定义异常:直接继承Exception实现。

猜你喜欢

转载自blog.csdn.net/hxl0925/article/details/81088105