java学习初级

继承:

  new 类名() 所指向的类必须是本类或父类,不能是子类,即等号左侧的类型必须大于或等于等号右侧的 new 出来的类。当大于时我们称之为向上造型。向上造型后  子类 将不再具备其自己定义的方法,只有父类的方法。

  java仅能单继承,不能多继承,即只能有一个父类

  此处不同于c++,c++的父类可以有多个!!!!!

重写与重载

  方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

  • (1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
  • (2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
  • (3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

  重载和重写可以用下面这张图来形象的表示。重载我们可以认为是多种表现形式,每种表现形式都能实现自己的功能。重写是在原有基础上加强自己的功能。

static 关键字的静态方法。

  静态方法和上面的静态变量大体上相同,但也有特殊的地方。

   1)属于类的,存在方法区中

   2)只有一份

   3)必须通过 类名. 来访问

   4)没有隐式的 this 传递,静态方法中不能直接访问实例变量

java独有的

  final关键字

    1、final 修饰成员变量,两种方式初始化:

      1)声明的同时初始化

      2)构造方法中初始化

    2、final 修饰局部变量,只要在用之前初始化即可。

    final 修饰方法:final 修饰方法不能被重写。

    1 class Aoo {}

    2 class Boo extends Aoo{}

    3 final class Coo extends Aoo{} // final 修饰的类可以继承别的类

    4

    5 final class Doo{}

    6 class Eoo extends Doo{} // 编译错误,final 修饰的类不能被继承

java独有(此处需要判断一下java的抽象类abstract和c++中的纯虚函数virtual)

  抽象类的定义:

     1、由 abstract 修饰;

     2、包含抽象方法的类必须是抽象类;

     3、抽象类不能被实例化;

     4、抽象类是需要被继承的,所以子类需要:

      1)重写所有抽象方法 --- 常用

      2)也声明未抽象类 ---不常用

  

   抽象类的意义:

     1、为其子类提供一个公共的类型 -- 向上造型;

     2、封装子类中的重复内容(成员变量和方法);

     3、定义有抽象方法,子类虽然有不同的实现,但该方法的定义是一致的。

implements和extends的区别(蓝色部分摘抄自别人博客,如果侵权,立即删除)

   implements 也是实现父类和子类之间继承关系的关键字,如类 A 继承 类 B 写成 class A implements B{}.

      这是百度百科上的解释:

        implements是一个类实现一个接口用的 关键字 ,他是用来实现接口中定义的抽象方法。比如:people是一个接口,他里面有say这个方法。public interface people(){ public say();}但是接口没有方法体。只能通过一个具体的类去实现其中的方法体。比如chinese这个类,就实现了people这个接口。 public class chinese implements people{ public say() {System.out.println("你好!");}}

      与Extends的不同

  extends, 可以实现父类,也可以调用父类初始化 this.parent()。而且会覆盖父类定义的变量或者函数。这样的好处是:架构师定义好接口,让工程师实现就可以了。整个项目开发效率和开发成本大大降低。

  implements,实现父类,子类不可以覆盖父类的方法或者变量。即使子类定义与父类相同的变量或者函数,也会被父类取代掉。

  这两种实现的具体使用,是要看项目的实际情况,需要实现,不可以修改implements,只定义接口需要具体实现,或者可以被修改扩展性好,用extends。

   

     记得张老师的视频中这样讲到:若同时用到 extends 和 implements 的时候,extends 必须放在 implements 关键字之前。如 : class A extends B implements C.

猜你喜欢

转载自www.cnblogs.com/jinfangzhao/p/12177067.html