Java Study For Seven Day( 面向对象三)

—恢复内容开始—

继承

class Person{ String name; int age;}class Student extends Person{void study() { System.out.println(“good study”); }}class Worker extends Person{ void work() { System.out.println(“good work”); }}class ExtendsDemo{ main(String[] args) {}}

View Code

1.把很多的类的相同的特征和行为进行抽取,用一个类来描述。让多个类和这个类产生一个关系

这样的话多个类可以省略很多的代码,这个关系就是继承,Java中关键字extends来表示。

  2.继承的体系结构

    A.多个具体的对象,不断的向上抽取共享的内容,最终形成了一个体系,叫做继承体系。

    B.继承体系的学习和原则

      学习顶层的内容。原因是它是体系的共性内容

      创建子类使用。也就是使用底层的具体对象

   3.继承的特点

    Java中只能是单继承,没有多继承这一说法。

    Java中可以多层(重)继承

   4.继承的好处

    继承的出现提高了代码的复用性

    继承让类与类之间产生了关系,是多态的前提条件

   5.子父类中的成员间的关系

     A.成员变量

      在子类中方法中使用一个变量时,首先,在方法的局部变量中找这个变量,有则使用

否则,在本类中找成员变量,有则使用,否则,在父类中找成员变量,有则使用,香港虚拟主机,否则报错。

     B.成员方法

       用子类对象使用方法时,首先,在子类中找这个方法,有则使用,否则,在父类中

找这个方法,有则使用,否则报错。

     重写和重载的区别

      重载:在同一个类中,方法名相同但是参数的列表不同,并且返回类型不能作为判断的依据

      重写:在不同类中(子父类中),方法声明(返回类型、方法名称、参数列表都要一致)。

     重写需要注意:

      子类方法的访问权限要大于等于父类方法的访问权限

      静态只能重写静态的,一般不会出现

     构造方法

      子列实例化过程

        子类创建对象时,会先去创建父类的的对象,默认是去调用父类的五参构造方法

        注意:子类构造方法中,默认第一行是super,原因是因为它继承父类的成员使用,使用前

这些成员必须初始化,因而,会先创建一个父类的对象,所以当父类没有无参构造函数时,必须使用this或是super

调用其它的构造函数。

   6.this和super的区别

    this代表是本类的对象的引用,而super代表的是父类的存储空间

class Fu{ private int num =4; void sperk() { System.out.println(“vb”); }}class Zi extends Fu{ int num =5; void show() { System.out.println(super.num); } void speak() { System.out.println(“java”); }}class ExtendsDemo1{ main(String[] args) { Zi zi = new Zi();//new一对象加载子类.class文件前先加载父类.class文件 System.out.println(zi.num+”…”+zi.num); zi.show(); }}class Tel{ void show() { System.out.println(“number”);}}class NewTel extends Tel{ void show() { System.out.println(“name”) .show(); System.out.println(“picture”); }}

View Code

final关键字

  1.最终的意思,可以用于修饰类、方法、变量

  2.final修饰的类不能继承,修饰的方法不能重写、修饰的变量是一个常量,只能被赋值一次

内部类只能访问被final修饰的局部变量。

class Demo{ x =3; show1() {final int y =4;// y = 4;pai =3.14;//给3.14这个数据起个名字,方便阅读} void show2(){}}class SubDemo extends Demo{ void show1(){}}class FinalDemo{ main(String[] args) {}}

View Code

抽象类

  1.多个类有相同的方法声明,但是方法体不一样,此时可以考虑把方法声明进行抽取,让子类继承后去

实现方法体,没有方法体,从而需要用抽象标志下,关键字是abstract

  2.抽象类

    该方法称为抽象方法,包含抽象方法的类就是抽象类

  3.抽象类的特点

    抽象类和抽象方法都要用abstract进行修饰

    抽象类不能被实例化

    抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类

  4.抽象类中的数据特点

    成员变量

      抽象类中可以有常量,也可以有变量

    成员方法

      抽象类中可以有抽象方法,也可以有非抽象方法

    构造函数

      抽象类是一个类,所有有构造函数,但是本身不能实例化,但是可以给子类实例化使用

  5.抽象类中的问题

    A.抽象类中有构造函数不能被实例化但是可以供子类实例化

    B.抽象关键字abstract不可以和那些关键字共存?

      私有的内容 继承不到,虚拟主机,所以不能重写但是abstract修饰的方法要求被重写所以冲突

final修饰的方法不能被重写也冲突,static假如一个抽象方法能通过static修饰,那么这个方法,就可以直接通过类名调用。而抽象方法是没有方法体的,这样的调用无意义。所以,不能用static修饰。

    C.抽象类中可不可以没有抽象方法?

      抽象类中没有抽象方法的作用,只是为了不让别的类建立该抽象类对象。这个在awt中有体现。

快忘了那些不高兴的事吧!你看就连今天的阳光都如此明媚灿烂,

Java Study For Seven Day( 面向对象三)

相关文章:

你感兴趣的文章:

标签云: