参加某培训机构Java培训记录(四)

时间:2021-11-26 17:14:12

十一七天假期过去,继续上课。考虑到同学们七天没上课,对之前所学可能生疏了,老师拿出了一天时间来复习。其间,老师要求大家用java语言重新编写了骑士飞行棋游戏。一天后,正式开讲新课,这周讲面向对象编程的三大特性:封装、继承、多态。

放假前,课上也讲到了在编程中要模拟现实世界,把特定变量和方法封装成类的思想。本周,老师对封装性进行了详讲。为了保护数据的安全性,要将数据设置为私有,并用公有的setter()和getter()方法来设置和获取数据。构造方法的使用,可以在实例化的时候就对其某些属性赋值,这样就减少了赋值的代码量,特别在对象数组赋值时。

构造方法的定义有几个特点:一、多用public访问修饰符(也有例外,比如在单例模式中);二、没有返回值,不写返回值类型(连void都不写);三、方法名与类名相同。另外,程序员没有定义构造方法时,类会自动产生一个无参的默认构造方法。但一旦程序员定义了构造方法,默认的构造方法就消失了。

编程中可以使用方法重载来降低功能相似的多个方法的命名和调用的复杂度,参数列表不同的方法都使用一个相同的名字,既免了起名的思考又减少了调用者的记忆。方法重载有三个特征:一、作用域相同(在一个类中或有继承关系的多个类中);二、方法名相同;三、参数列表不同。方法重载称之为静态多态。构造方法也可以重载,增加了赋值的灵活性。

同一个类的所有对象在内存*用相同的成员方法,可以用方法中隐藏的this引用来区别不同的对象,因为它总是指向调用它的对象。可以用关键字static使同一个类的所有对象共享指定的成员变量。

为了提高代码的重用性,并体现出现实世界分类的层次性,提出了继承的概念。继承具有单一性(一个派生类只能继承于一个基类)和传递性(A继承于B,B继承于C,则A也继承了C的属性和方法)。实例化派生类时,会先调用基类的构造方法再执行派生类的构造方法。构造方法可以用super()或this()调用基类构造方法或本类其它构造方法,且必须放构造方法体的首行。

在继承关系中,子类与父类的方法原型相同(返回值类型、函数名、参数列表都相同),就构成了方法覆盖。子类覆盖方法的方位权限不能低于父类的访问权限。

父类的引用可以指向子类的实例,这叫做引用转型。方法覆盖和引用转型同时存在情况,我们称之为动态多态。

抽象方法是没有方法体(即没有大括号)且以abstract关键字声明的方法。如果类中包含了抽象方法,则该类必须也是抽象类。但抽象类中可以有非抽象方法,而且可以都是非抽象方法。派生类必须实现抽象类的所有抽象方法,除非该派生类也是一个抽象类。