JAVA 面向对象 中

 面向对象特征之二:继承性(inheritance)

为什么要有继承?

多个类存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只需要继承(extends)这个类即可.

类继承语法规则:class Test01 extends Test02{}

作用:

  继承的出现减少了代码冗余,提高了代码的复用性。

  继承的出现,更有利于功能的扩展。

  继承的出现让类与类之间产生了关系,提供了多态的前提。

注意:不要为了获取其他类中的某个功能而去继承

  ① 子类继承了父类,就继承了父类的方法和属性。

  ② 在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法。

  ③ 在java中,继承的关键字用的是“extends”,即子类不是父类的子集,而是对父类的“扩展”。

     关于继承的规则:

  子类不能直接访问父类中私有(private)的成员变量和方法。

  java只支持单继承和多层继承,不允许多重继承

  方法的重写(override/overwrite)

  定义:在子类中可以根据需要对父类中继承来的方法进行改造,也称方法的重置、覆盖。在程序执行时,子类的方法将覆盖父亲的方法。

  要求:

  ① 子类重写的方法和父类被重写的方法具有相同的方法名称、参数列表

  ② 子类重写的方法的返回值必须一样

  ③ 子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限

  ④ 子类不能重写父类中声明为private权限的方法

  ⑤ 子类方法抛出的异常不能大于父类被重写方法的异常

  注意:

  子类与父类中同名的方法必须同时声明为非static的(即为重写),同时声明为static的(不是重写)。因为static方法是属于类的,子类无法覆盖父类的方法。

 

关键字——super

在java类中使用super来调用父类中的指定操作:

  ① super可用于访问父类中定义的属性

  ② super可用于调用父类中定义的成员方法

  ③ super可用于在子类构造器中调用父类的构造器

注意:

  尤其当子类出现同名成员时,可以用super表明调用的是父类中的成员

  super的追溯不仅限于直接父类

  super和this的用法想像,this代表本类对象的引用,super代表父类的内存空间的标识

 

this和super的区别  

  

 

 

 

 

 面向对象特征之三:多态性

多态性,是面向对象中最重要的概念,在Java中的体现:

对象的多态性:父类的引用指向子类的对象

  可以直接应用在抽象类和接口上

面试题 == 和 equals 的区别

1  == 既可以比较基本类型也可以比较引用类型,对于基本类型就是比较值,引用类型就是比较内存地址

2  equals的话,它是属于Java.lang.Object类里面的方法,如果该方法没有被重写默认也是用 == 来比较的

3  具体要看自定义类里有没有重写Object的equals方法来判断。

4  通常情况下,重写equals方法,会比较类中的相应属性是否都相等。

 

 包装类的使用

 针对八种基本数据类型定义相应的引用类型—包装类(封装类)

 

 

 

 JDK1.5之后,支持自动装箱,自动拆箱。但类型必须匹配。

 自动装箱  示列:   Integer i = 100;

 自动拆箱  示列:  int i = new Integer(100);

 

 

native

         简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,并且被编译成了 DLL,由 java 去调用。

(1)为什么要用 native 方法


  java 使用起来非常方便,然而有些层次的任务用 java 实现起来不容易,或者我们
对程序的效率很在意时,问题就来了。例如:有时 java 应用需要与 java 外面的
环境交互。这是本地方法存在的主要原因,你可以想想 java 需要与一些底层系
统如操作系统或某些硬件交换信息时的情况。本地方法正是这样一种交流机制:
它为我们提供了一个非常简洁的接口,而且我们无需去了解 java 应用之外的繁
琐的细节。

 

(2)native 声明的方法,对于调用者,可以当做和其他 Java 方法一样使用

 一个 native method 方法可以返回任何 java 类型,包括非基本类型,而且同样可

以进行异常控制。

 native method 的存在并不会对其他类调用这些本地方法产生任何影响,实际上

调用这些方法的其他类甚至不知道它所调用的是一个本地方法。JVM 将控制调用
本地方法的所有细节。

 如果一个含有本地方法的类被继承,子类会继承这个本地方法并且可以用 java

语言重写这个方法(如果需要的话)。

 

 

posted @ 2021-03-02 10:37  不会掉头发的程序猿  阅读(83)  评论(0)    收藏  举报