开启JAVA之路--语法篇-2

继承相关语法

1、java中的继承用extends替换了C++中的 : ,并且java中只有public继承,没有private和protect继承。

2、当子类重写了超类的方法时,如果需要调用超类的方法,则需要使用super.xx()即可,但是在C++中使用父类名::xx来调用。

      这里super和this是不一样的概念,this是一个指向当前对象的引用,但是super仅仅是一个指示编译器调用超类方法的关键字。

3、java中同样适用super来调用父类的构造函数,但是必须将此语句放在子类构造函数的第一句。

          super(xx,xx,xx)

     在C++中在初始化列表中调用父类的构造函数。

4、java种没有虚函数这个概念,但是可以认为其所有函数都是虚函数,在java中动态绑定是默认的处理方式,父类的引用可以指向子类的对象,默认实现多态。

扫描二维码关注公众号,回复: 5878518 查看本文章

5、将一个类定义成final类,表示该类不能被继承。把一个方法定义成final方法,表明该方法不能被重写。

6、java种也有抽象类的概念,即包含一个或者多个抽象方法的类。抽象类或者抽象方法用关键字abstract。和C++的抽象类差不多,抽象类的所有抽象方法必须全部被重写之后才能实例化。

7、类的访问控制:

            private:仅对本类可见

            protected:对本包和所有子类可见

            public:所有类可见

            默认:本包可见

8、要覆盖超类的方法时一般会加上@Override标记。

9、java中所有的类的超类都是Object。

     1)equals方法:仅仅判断两个引用是否指向同一个对象,不能比较两个对象是否相等。可以重写该函数,重写时注意几点:

              (1)假设传入对象引用为otherObject,第一步是判断otherObject和this是否指向同一对象

              (2)判断otherObject是否为空。

              (3)利用getClass判断otherObject和this是否属于同一个类。

              (4)开始真正的比较代码。

      2)hashCode方法:用于得到对象的hash值。注意:hashCode的定义与equals方法的定义必须一致。

            hash方法,可以传入多个对象,得到组合的hash值。

      3)toString方法:返回对象的字符串表示。

      4)getClass方法:得到对象的类的信息。

      5)getName方法:返回对象的类的名字。

10、java中可以在运行是指定数组的大小,也就是说数组的大小可以是变量。

       java中也有动态数组,ArrayList,和C++中的vector很像。但是需要注意:new ArrayList<>(100),并不表示有100个元素,只是说该数组有100个元素的空间可以用,但是刚定义的时候是没有元素的。

       ArrayList访问元素不能用[],因为java中没有运算符重载,因此访问需要用set和get方法。

11、对象包装器,所有的基本类型都不是真正的类,没有对象这一说。但是java针对每个基本类型都定义了一个相应的类,Integer、Long、Float...等,这就叫对象包装器。对象包装器一旦包装好之后,其封装的值是不能被更改的。

       对于ArrayList,只能接收类,因此ArrayList<int>是不合法的,但是ArrayList<Integer>是可以的,此时当我们将int赋值给Integer或者该表Integer的值时,编译器会自动将Integer拆包,变成int,然后更改int值,然后重新装包。从这个过程看,对象包装器的操作非常耗时。

12、可变参数数量的方法,在定义方法的时候加上...,就可以表示可接受任意数量的参数,并自动保存成一个数组。

      public static double max(double... values)       {    }          

    则函数max可以接受任意数量的参数,并保存在values[]数组中,遍历values,就可以得到所有的输入参数。

13、java种的枚举类和C++枚举差别很大。

       C++中的枚举类:

             1)只能定义常量,主要用于switch子句

             2)是C++中的枚举常量可以直接和数值型变量进行各种数学运算

       JAVA中的枚举类:

              是一个类(完整的类),继承自Enum类,可以有构造函数(必须是private)、成员变量等。

14、java中有个强大的机制,反射。

未完待续...

猜你喜欢

转载自blog.csdn.net/Na2Co3_Ren/article/details/82769391
今日推荐