继承概述:将学生和工人的共性描述提取出来,单独进行描述。只要让学生和工人与单独描述的这个类有关系就可以了。
继承特点:提高了代码的复用性。让类与类之间产生了关系,有了这个关系,才有了多态的特性。
java语言中,只支持单继承,不支持多继承,因为多继承容易带来安全隐患。
当多个父类中定义了相同功能,当功能内容不同时,子类对象不不确定运行哪一个。
但是java保留了这种机制,并用另一种体现形式来完成表示,叫多实现。
java支持多层继承。也就是一个继承体系。
如:儿子继承爸爸,爸爸继承爷爷,儿子拥有爷爷的东西,也拥有爸爸的东西
简单一句话:查阅父类功能,创建子类对象使用功能。
二、子父类中的变量类中的成员:变量、函数、构造函数,果子类中出现非私有的同名成员变量时,
子类要访问本类中的变量,用this,
子类要访问父类中的同名变量,用super。
super的使用和this的使用几乎一致。
this 代表的是本类对象的引用,
super 代表的是父类对象的引用。
当子父类出现和父类一模一样的函数时,
当子类对象调用该函数,会运行子类函数的内容。
如同父类的函数被覆盖一样。
这种情况是函数的另一个特性:重写(覆盖)
复写:
1、子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败。
2、静态只能覆盖静态。不能覆盖非静态。
已学的权限有几种:
1、private 私有
2、public 公共
3、默认权限
注意:
重载:只看同名函数的参数列表。
重写:子父类方法要一模一样。包括返回值类型
在对子类对象进行初始化时,父类的构造函数也会运行。
那是因为子类的构造函数默认第一行有一条隐式的语句 super();
super()会访问父类空参数的构造函数,而且子类中所有的构造函数默认第一行都是super();
为什么子类一定要访问父类中的构造函数?
答:因为子类可以直接获取父类中的数据,所以子类对象在建立时,需要先查看
父类是如何对这些数据进行初始化的。如果要访问父类中指定的构造函数,可以
通过手动定义super语句来定义。
只有子类才有super();
构造函数里面只能有一个隐式语句,如果有了super();,就不能在有this();
结论:
子类的所有构造函数,默认都会访问父类中空参数的构造函数。
因为子类每一个构造函数的第一行都有一句隐式super();
当父类中没有空参数的构造函数时,子类必须手动通过super或者this语句形式来指定要
访问父类中的构造函数。当然,子类的构造函数第一行也可以手动指定this语句来访问本
类中的构造函数。子类中至少会有一个构造函数会访问父类中的构造函数。
final:最终,是一个修饰符,
1、可以修饰类、函数、变量。
2、被final修饰的类不可以被继承。为了避免被继承,被子类复写功能。(如01)
3、被final修饰的方法不可以被复写。(如02)
4、被final修饰的变量是一个常量,只能赋值一次,既可以修饰成员变量,又可以修饰局部变量。(如03)
当在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,
都给这些值起个名字,方便阅读。而这个值不需要改变,所以加上final修饰。
作为常量:常量的书写规范所有字母都大写,如果有多个单词组成,单词之间用_连接
5、内部类定义在类中的局部位置上是,只能访问该局部被final修饰的局部变量。
当多个类中出现相同功能,但是功能主体不同,
这时可以进行向上提取。只抽取功能定义,而不抽取功能主体。
抽象类的特点:
1、抽象方法一定在抽象类中。
2、抽象方法和抽象类都必须被abstract关键字修饰。
3、抽象类不可以用new创建对象,因为调用抽象方法没意义。
4、抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用。
如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
区别:抽象类比一般类多了抽象函数,就是在类中可以定义抽象方法,抽象类不可以实例化。
特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。
总结:
抽象类不能被创建对象,只能由子类创建对象复写其所有的抽象方法,
抽象类的方法必须是抽象方法,但抽象类可以不定义方法,
当抽象类中没有定义方法时,子类可以创建任意方法。
需求:获取程序运行的时间。
原理:获取程序开始和结尾的时间并相减即可。
获取当前时间的毫秒值:System.currentTimeMillis();
当代码完成优化后,就可以解决这类问题,这种方式叫模板方法设计模式。
什么是模板方法呢?
在定义功能时,功能的一部分是确定的,但是有一部分是不确定,而确定的部分在
使用不确定的部分,那么这时就将不确定的部分暴露出去,由该类的子类去完成。
接口是对外暴露的规则。
接口是程序的功能扩展。
接口可以用来多实现。
类与接口之间是实现关系,而类可以继承一个类的同时实现多个接口。
接口与接口之间可以有继承关系,而且可以多继承。
空灵 发表于 2014-11-20 00:06
打字扒资料累死了,版主就给一个技术分啊,菜鸟没前途啊
空灵 发表于 2014-11-20 00:06
打字扒资料累死了,版主就给一个技术分啊,菜鸟没前途啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |