31.类的定义格式
修饰符\]class〈类名〉\[extends父类名\]\[implements接口名
类主体
其中,clas是定义类的关键字,《类名〉是所定义的类的名字,extends表示该类维承了它的父类,父类名指明父类的名称,implements表示类所实现的接口,若实现多个接口则用逗号隔开。
32.类主体设计
Java的类包括变量和方法,分别叫做类的成员变量和成员方法。因此,类主体的设计主要是成员变量的设计和成员方法的设计两个部分。声明成员变量的格式为:
修饰符\]《变量类型》〈变量名〉声明成员方法的格式为:
〈修饰符》〈返回值类型》〈方法名〉(\[参数列表\])\[throws \
方式二:同时定义数组变量并创建数组对象,相当于将方式一中的两步合并,格式是:数组元素类型数组名[]=new数组元素类型[数组元素个数]:数组元素类型[]数组名mnew数组元素类型[数组元素个数]
方式三:利用初始化,完成定义数组变量并创建数组对象,此时不用new运算符。格式是;数组元素类型数组名[]={值1,值2,..):
48.对数组元素的访间,通过下标进行。一维数组元素的访问格式为:数组名[下标]
Java规定,数组下标由0开始,最大下标是数组元素个数-1。在访问数组元素时,要特别注意下标的越界问题,即下标是否超出范围。
49.继承是存在于面向对象程序中的两个类之间的一种关系,当一个类A能够获取另一个类 B中所有非私有的数据和操作的定义作为自己的部分或全部成分时,就称这两个类之间具有维承关系。被维承的类B称为父类或超类,缝承了父类或超类的数据和操作的类A称为子类。
一个父类可以同时拥有多个子类,这时这个父类实际上是所有子类的公共城和公共方法的集合,而每一子类则是父类的特殊化,是在父类的基础之上对公共域和方法在功能,内涵方面的扩展和延伸
50.使用继承具有以下的好处 降低了代码编写中的冗余度,更好地实现了代码复用的功能,从而提高了程序编写的效率;由于降低了代码的冗余度,使得程序在维护时就变得非常的方便。
51.维承的类型:单重维承,是指任何一个类都只有一个单一的父类,多重继承是指一个类可以有一个以上的父类,它的静态的数据属性和操作从所有这些父类中维承。 Java 语言仅支持类的单重继承。
52.所谓多态,是指一个程序中同名的不同方法共存的情况。面向对象的程序中多态的情况有多种,可以通过子类对父类成员的覆盖实现多态,也可以利用重载在同一个类中定义多个同名的不同方法
53.继承的实现:主要有以下几个步骤 1、确定父类。
2、定义子类,它的具体语法是:
类修饰符\]class 子类名 extends 父类名3实现子类的功能。 54.构造函数的维承 1、子类无条件地维承父类的不含参数的构造函数; 2、如果子类自己没有构造函数,则它将继承父类的无参数构造函数作为自己的构造函数;如果子类自己定义了构造函数,则在创建新对象时,它将先执行继承父类的无参数构造函数,然后再执行自己的构造函数。 3、对于父类的含参数构造函数,子类可以通过在自己构造函数中使用"super"关键字来调用它,但这个调用语句必须是子类构造函数的第一个可执行语句。 55.子类对继承自父类的类成员重新进行定义,就称为覆盖,它是一种很重要的多态形式,要进行覆盖,就是在子类中对需要覆盖的类成员以父类中相网的格式,再重新声明定义一次,这样就可以对维承下来的类成员进行功能的重新实现,从而达到程序设计的要求。 56.域变量的隐藏:子类重新定义一个与从父类那里维承来的属性变量完全相同的变量,称为域变量的隐藏。对于域变量的隐藏来说,父类定义的域变量在子类对象实例化时仍然分配一个存储空间,当子类执行维承自父类的操作时,处理的是维承自父类的变量,而当子类执行它自己定义的方法时,所操作的就是它自己定义的变量,而把维承自父类的变量"隐藏"起来。 57.方法的覆盖 子类重新定义与父类同名的方法,实现时父类方法的覆盖(Overload). 58.方法的覆盖与域的隐藏的不同之处在于;子类隐藏父类的域只是使之不可见,父类的同名城在子类对象中仍然占有自己的独立内存空间 而子类方法对父类同名方法的覆盖将清除父类方法占用的内存空间,从而使父类方法在子类对象中不复存在。 59.方法的覆盖中需要注意的问题是:子类在重新定义父类已有的方法时,应保持与父类完全相同的方法头声明,即应与父类有完全相同的方法名,返回值和参数列表。否则就不是方法的覆盖,而是子类定义自己的与父类无关的方法,父类的方法未被覆盖,所以仍然存在。 60.相对this来说,super表示的是当前类的直接父类对象,是当前对象的直接父类对象的引用。所谓直接父类是相对于当前类的其他"祖先"类而言的。 61.在Java 中,同一个类中的两个或两个以上的方法可以有同一个名字,只要它们的参数声明不同即可,在这种情况下,该方法就被称为重载(overloaded),这个过程称为方法重载(method overloading)。方法重载是Java实现多态性的一种方式 62.有两个规则适用于重载方法: 1、调用语句的参数表必须有足够的不同,以至于允许区分出正确的方法被调用。 2、方法的返回类型可以各不相同,但它不足以使返回类型变成唯一的差异。重载方法的参数表必须不同。 63.在Java中,凡是用abstract修饰符修饰的类称为抽象类。 64.抽象类和一般的类不同之处在于: 1如果一个类中含有未实现的抽象方法,那么这个类就必须通过关键字abstract进行标记声明为抽象类。 2抽象类中可以包含抽象方法,但不是一定要包含抽象方法。它也可以包含非抽象方法和域变量,就像一般类一样。 3抽象类是没有具体对象的概念类,也就是说抽象类不能实例化为对象。 4抽象类必须被维承。子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类。 65.如果一个类被fnal修饰符所修饰和限定,说明这个类不可能有子类,这样的类就称为最终类,最终类不能被别的类雄承,它的方法也不能被覆盖。被定义为fnal的类通常是一些有固定作用,用来完成某种标准功能的类。 66.接口就是一种约定,使得实现接口的类在形式上保持一致。 67.接口与抽象类的区别: 1、接口不能包含任何可以执行的方法,面抽象类可以。 2、类可以实现多个接口,但只有一个父类。 3、接口不是类分级结构的一部分,而没有联系的类可以执行相同的接口。