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)子类覆盖父类抽象方法时,权限必须大于或者等于父类方法权限
|