201671010116. 2016-2017-4《Java程序设计》认识对象与类及继承

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了201671010116. 2016-2017-4《Java程序设计》认识对象与类及继承相关的知识,希望对你有一定的参考价值。

  1.  类和对象是面向对象编程思想中的核心和基础。类是作为对象的抽象而存在的,所有的对象都依据相应的类来产生,在面向对象的术语中,这个产生对象的过程称为“实例化”。类就是对一类事物或者一类对象的一个归类或者说划分。我们甚至可以说,”类“只是一个形容词,而‘对象‘就是这个形容词所形容的其中一个”实体对象“。当然也有例外,比如我们都知道Java里面有一个关键字 ‘static‘,大家都知道被static所修饰的变量或者方法,在使用的时候是不需要实例化对象的.只需使用类名+变量名/方法名即可。static对象/方法归属于当前类,非static对象/方法归属于当前’对象’,对象是类的一份子,当然是可以使用static对象,反过来则不行。

 

       构造函数是对象被创建的时候提供的一种特殊的数据结构,这里需要明白的是构造函数本身不是函数。它具有和它所在的类完全一样的名字。一旦定义好一个构造函数,该对象在被实例化的过程会自动调用它,而构造函数本身没有任何返回类型,不能错误地认为构造函数的返回类型是void,构造函数返回值的类型就是该类本身。

       构造函数在源代码级别我们可以认为是一个特殊的方法,构造方法有时候我们又称为一个类的构造子,其特征如下:

      [1]构造函数的方法名必须与类名相同。

      [2]构造函数没有返回类型,也不能使用void作为返回类型,在方法名前面不能生命方法类型。

      [3]构造函数的作用是为了完成对象初始化,它能够把定义对象时的参数传给对象。

      [4]一个类可以有多个构造函数,构造函数同样支持重载,重载法则遵循函数的重载法则。

      [5]如果没有定义任何构造函数系统会默认一个无参数的构造函数,此函数什么也不做。

  2.  类的继承:继承是所有OOP语言不可缺少的部分,java类的继承主要通过extends关键字来完成的。当创建一个类时,总是在继承,如果没有明确指出要继承的类,就总是隐式地从根类Object进行继承。一旦继承后,子类将获得父类的成员属性跟成员方法。基本语法:class类名extends父类名。

       当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:

  1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;

  2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;

  3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。

        子类也并不是完全继承父类的所有方法,原则如下:

  1)能够继承父类的public和protected成员方法;不能够继承父类的private成员方法;

  2)对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;

  3)对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。

  注意:隐藏和覆盖是不同的。隐藏是针对成员变量和静态方法的,而覆盖是针对普通方法的。

       子类是不能够继承父类的构造器,但是要注意的是,如果父类的构造器都是带有参数的,则必须在子类的构造器中显示地通过super关键字调用父类的构造器并配以适当的参数列表。如果父类有无参构造器,则在子类的构造器中用super关键字调用父类构造器不是必须的,如果没有使用super关键字,系统会自动调用父类的无参构造器。

 

 

以上是关于201671010116. 2016-2017-4《Java程序设计》认识对象与类及继承的主要内容,如果未能解决你的问题,请参考以下文章

201671010116. 2016-2017-3《Java程序设计》浅谈Java

201671010116. 2016-2017-14《Java程序设计》 第14周学习总结

201671010116. 2016-2017-5《Java程序设计》认识继承

201671010116. 2016-2017-12《Java程序设计》第12周学习总结

201671010116. 2016-2017-18《Java程序设计》第18周学习总结

201671010116. 2016-2017-10《Java程序设计》第10周学习总结