黑马程序员技术交流社区
标题: Java基础学习 第8天 [打印本页]
作者: luguoyuanf 时间: 2013-3-28 21:00
标题: Java基础学习 第8天
4.1类的继承
4.1.1 继承的概述
关键字:extends
继承以后自己会拥有父类中的成员变量和成员函数(不是全部)
好处:
1)代码量简化,自雷直接拿父类的使用
2)继承的出现使类与类之间产生了关系,正是因为这个关系,导致了面向对象的第三个特征----多态
前提:
只支持单继承,一个类只能继承一个类,多继承有安全隐患
注意:Java中是支持多线继承.
继承体系:父类都是子类中共性的内容
4.1.2 继承应用场景
判断一个事物是否属于另一个事物的一种时,可以使用继承.
4.1.3 父类中成员变量特点
关键字:super
this表示本类的对象引用,区别成员变量和局部变量重名.(非静态)
super便是父类的存储空间,区别的是子类中和父类中重名的成员变量(非静态)
注意:静态内不允许包含this,super关键字
子类和父类都存储在子类对象中存储,父类的成员变量是super,子类的是this.
4.1.4 子父类中的成员函数的特点
子类和父类中出现了一模一样的函数,看上去像是子类的函数覆盖了父类的函数这个现象,这就是函数的另一个特性,覆盖,重写.简单可以说子类覆盖父类的函数
4.1.5 子父类中构造函数特点
构造函数不能继承
父类的构造方法先运行,之后再运行子类的构造方法
原因在于子类的构造函数的第一行有一行隐士代码super();
子类中的所有构造方法,都默认访问父类空参的构造方法
this在构造函数之间进行调用
子类中的构造函数都默认的访问父类空参数构造方法
使用super(参数),访问中有参数的构造方法
4.1.6final关键字
主要用来锁定变量初始化赋值,不是默认值
在Java中声明类,属性和方法时,可使用关键字final来修饰
final标记的类不能被继承
final标识的方法不能被子类重写
final标识的变量(成员变量或局部变量)即成为常量,只能赋值一次
4.2.1抽象类(abstract)
定义一些不含方法体的方法,,它的方法体的实现交给该类的子类根据自己的情况去实现,这样的方法就是抽象方法,包含抽象方法的类叫抽象类
抽象类定义规则:
1)抽象类必须用abstract关键字来修饰,抽象方法也必须用abstract来修饰
2)抽象类不能被实例化(就是不能被new新建对象)
3)抽象方法只需声明,而不需实现
4)含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖该抽象方法才能被实例化
抽象方法的写法
abstract返回值类型 抽象方法 (参数列表)
抽象类特点:
1)抽象类中没有构造方法
虽然抽象类不能实例化对象,但是构造函数可以为子类提供变量的初始化赋值
2)抽象类中可以没有抽象方法,GUI图形化界面就有体现
3)抽象类关键字,abstract不可以跟final private关键字共存
final修饰的方法不能被覆盖,但是抽象方法需要子类覆盖.
private修饰符对变量私有了,而abstract需要直接子类覆盖
方法的覆盖前提:
1)方法没写任何权限修饰符,默认就是default权限,小于public
2)子类覆盖父类抽象方法时,权限必须大于或者等于父类方法权限
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |