继承(extends)

来源:互联网 发布:程序员简历项目描述 编辑:程序博客网 时间:2024/05/17 07:17


类与类之间并不是彼此孤立的,而是之存在着相互联系的,java中类之间的关系关系大致分为以下几种:

1.        关联关系(老师教给学生上课老师学生学校就是一种关联关系)

2.        继承关系(….is a…..)

3.        聚集关系:

A.        聚合(球员是球队一员)

B.        组合(手是身体的一部分)

千万不要为了获取其他类的功能,简化代码而继承,必须是类与类之间有所属关系才可以继承(用什么是什么来判断 is a

继承中要用到的关键字:extends this super final abstract

this 表示本类引用 super表示父类引用所以当存在继承时,在子类当中可以用super调用从父类继承而来的成员,this调用本类特属的成员,但其实this也引用从父类继承而来的成员,而super却不能应用子类特有成员。当子父类存在相同成员变量时,在子类中引用时,默认的或用this引用时是子类中新定义变量,super引用时为从父类继承而来的那个变量。

当子类和父类有相同的函数时,当子类调用该函数时实际上调用的是子类中的函数,子类继承父类时,子类就有了父类的功能当子类虽具备该功能,但功能的内容却和父类一样,这时没有必要定义新功能,而使用覆盖(重写)的特性,保留功能定义,而重写实现功能。很明显,重写有助于功能扩展。

重写是的注意事项:

1.    子类复写父类方法就,必须保证子类中方法的权限大于等于父类中原方法的权限

2.    静态只能覆盖静态

3.    父类中private de方法不能被复写

 final修饰符可以修饰类,变量,方法。

 final特性:

1.    final修饰的类不能被继承

2.    final修饰的方法不能被重写

3.    final修饰的变量只能被赋值一次,即可修饰局部变量又可修饰成员变量

什么时候用final

挡在描述事物时,一些数据的出现是固定不便的,那么这时候为了增强阅读性。都给这些值起个名字,方便阅读,而这个值不许要改变,所以加上final修饰作为常量。常量的书写规范,常量名必须大写,单词间用下划线隔开,(public static final int DESH_WIDTH = 50.

 

Abstract修饰符可以用来修饰类和方法.当多个类中出现相同功能,但功能主体不同时,可以进行向上抽取,这时,只抽取功能定义,而不抽取功能主体。

Abstract 的特性:抽象方法一定要定义在抽象类中,抽象方法和抽象类必须被abstract修饰。抽象类不可以用new来创建实例对象。因为抽象方法无意义。抽象类中的抽象方法必须有其子类或子类的子类去重写方法体的实现并使用。若子类只重写了部分抽象方法,则此子类任为抽象类,换句话说,就是只要类中含有走向方法,此类就是抽象类,必须的有abstract修饰。

             

 在子类对象进行初始化时父类构造函数也会运行,那是因为子类构造函数的第一行有一个隐式的父类无参构造函数(其形如super()),若父类不存在无参构造函数,我们就必须手动在子类构造函数中加入父类的相应形式的构造函数形如super(参数列表)。

为什么类一定要访问父类中的构造函数?

因为子类继承了父类,就获得了父类的所有属性,所以子类在建立时,需要先查看父类是如何对这些数据初始化的,所以子类在对象初始化时要首先访问父类的构造函数。注意父类构造函数必须写在子类构造函数的第一行,并且当构造函数调用了本类的构造函数时,不可以在调用父类的构造函数,当然此时被调用的子类构造函数也必须在第一行(this(参数列表))。因为比调用的构造函数中已经调用了父类的构造函数了,再调用的话,没有意义

 


 

 

 

 

 

 

原创粉丝点击