本文共 1599 字,大约阅读时间需要 5 分钟。
1 类的继承
子类对父类的继承通过在类的声明中,用关键字extends来说明:
[ClassModifier] class className [extends SuperClassName] [implement interface]
{
//类体
}
1.1 继承的语法
1、子类的对象可以使用父类中声明为共有及保护的属性方法
2、子类不能直接访问父类中继承的私有属性及方法,但可以使用公有和保护方法进行访问
1.2 隐藏和覆盖
1.2.1 属性的隐藏
子类对从父类继承来的属性变量重新加以定义,则从父类继承的属性将被隐藏
访问被隐藏的父类域:调用从父类继承的方法;使用super.域名
子类不能继承父类中的静态属性,但可以对父类中的静态属性进行操作
1.2.2 方法的覆盖
声明子类时使用相同的方法名和参数,但执行不同的功能
以下三种情况:
1、子类中实现与父类相同的功能,但采用不同的算法或公示
2、在名字相同的方法中,要做比父类更多的事情
3、在子类中需要取消从父类继承的方法
2 子类和子类型
类定义了类型
子类定义了子类型
子类的对象可以:被当作父类的对象使用、赋值给父类的变量、传递给需要父类对象的函数、放进存在父类对象的容器里
在子类的构造函数中可以使用super()为父类的构造函数传参
3 有继承时的构造方法
构造方法是类的一种特殊方法,它可以重载,但不能从超类那里继承,有继承时的构造方法必须遵循:
1、子类不能从超类继承构造方法
2、好的程序设计方法是在子类的构造方法中调用某一个超类的构造方法
3、super关键字也可以用于构造方法中,其功能是调用超类的构造方法
4、如果在子类的构造方法的声明中没有明确调用超类的构造方法,则系统在执行子类的构造方法时会自动调用超类的默认构造方法
5、如果在子类的构造方法的声明中调用超类的构造方法,则调用语句必须出现在子类构造方法的第一行
4 终结类和终结方法
如果一个类有final修饰和限定,说明这个类不允许有子类,由final修饰的方法是不能被子类重载的方法
5 覆盖Override
子类和父类中存在名称和参数完全相同的函数,这一对函数构成覆盖关系
通过父类的变量调用存在覆盖关系的函数时,会调用变量当时所管理的对象所属的类的函数
6 抽象
带有abstract修饰符
抽象函数——为表达概念而无法实现具体代码的函数
抽象类——表达概念而无法构造处实体的类
抽象类是一个不完整的类,不能用new方法进行实例化,声明抽象类时在类前加上修饰符abstract
抽象类中有抽象方法,也要用abstract修饰:
public abstract (参数表)
有抽象函数的类不一定是抽象类
抽象类不能制造对象,但是可以定义变量
任何继承了抽象类的非抽象类的对象可以赋给这个变量
继承自抽象类的子类必须覆盖父类中的抽象函数
7 Object类
所有的类都继承自Object
Object类的函数
toSpring()
equals()
8 泛型
参数化类型,即所操作的数据类型被指定为一个参数
用在类、接口和方法的创建中,分别为泛型类、泛型方法和泛型接口
定义方法
//泛型类
class A {
}
class B{
}
//泛型方法
class A{
void fun1(){
}
void fun2(){
}
}
8.2 通配符泛型和有限制泛型
通配符"?",在java中“?”代表任意一种类型
有限制的泛型指:在参数“Type”后面使用extends关键字加上类名或接口,表明参数所代表的类型必须是该类的关键字或者实现了该接口
注意,对于实现了某接口的有限制泛型,也是使用extends关键字,而不是implements关键字
9 包的应用
1、语言包java.lang
2、实用包java.util
3、文本包java.text
转载地址:http://yeexl.baihongyu.com/