Java面向对象程序设计
一、类的封装
1.类的封装定义
类的封装,是一种将一组相关的变量和函数封装成一个独立的数据类型的技术,以提高程序的可维护性、可重用性。
类的封装,可以将一组相关的变量和函数封装在一个独立的自定义数据类型内,这种独立的数据类型称为类,类是一种抽象,它可以把相关的信息和数据封装起来,便于维护和使用,从而提高程序的可维护性和可重用性。
2.类的封装特性
(1)数据封装
类的封装最大的优点之一是将数据和它们的操作封装在一个结构里面,使得数据操作更加简单、快捷。
(2)访问控制
类可以通过类的修饰符来控制访问权限,使得部分数据和函数只能被类本身所调用,这样可以保证自己的资源不被滥用。
(3)抽象
类能够把复杂的具体事物抽象成一个独立的实体,以便让程序进行更有效的管理。
(4)继承
类具有继承的能力,可以将相关的操作封装放到基类中,而子类只需要根据需要进行相应的改进和扩展,这样可以减少代码的见余,提高程序的可复用性。
3.this关键字
this关键字在java中表示当前类的对象,可以理解成指向对象本身的一个指针。通俗地说就是表示当前类对象”自己“,它是在对象被创建时自动产生的。我们可以用this关键字来调用本类的属性、方法、构造方法。当我们在构造方法中使用this时,this表示的是当前类的成员变量。从上所知,this关键字的作用有以下几点:
①用来表示当前类的对象;
②调用当前类中的属性;
③调用当前类的方法或构造方法。
4.构造方法
(1)构造方法的定义
构造方法,是一种特殊的方法,它是一个与类同名的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。
(2)构造方法的作用
①构造出来一个类的实例;
②对构造出来个一个类的实例(对象)初始化。
(3)构造方法的特殊性
构造方法是一种特殊的成员方法,它的特殊性反映在如下几个方面:
1.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。
2.主要完成对象的初始化工作,构造方法的调用是在创建一个对象时使用new操作进行的。
3.类中必定有构造方法,若不写,系统自动添加无参构造方法。接口不允许被实例化,所以接口中没有构造方法。
4.不能被static、final、synchronized、abstract和native修饰。
5.构造方法在初始化对象时自动执行,一般不能显式地直接调用.当同一个类存在多个构造方法时,java编译系统会自动按照初始化时最后面括号的参数个数以及参数类型来自动一一对应。完成构造函数的调用。
6.构造方法分为两种:无参构造方法和有参构造方法。构造方法可以被重载,没有参数的构造方法称为默认构造方法,与一般的方法一样,构造方法可以进行任何活动,但是经常将他设计为进行各种初始化活动,比如初始化对象的属性。
7.构造代码块:
(1)作用:给对象进行初始化,对象一建立就执行,而且优先于构造函数执行;
(2)构造代码块和构造函数的区别:构造代码块是给所有不同对象的共性进行统一初始化,构造函数是给对应的对象进行初始化。
8.自定义类中,如果不写构造方法,java系统会默认添加一个无参的构造方法。如果写了一个有参的构造方法,就一定要写无参构造方法。
二、类的继承
1.什么是继承以及继承的作用
面向对象编程中有一个重要的思想叫继承,子类通过继承可以获得父类的属性和方法,被继承的类叫父类,继承的类叫子类。(注意:私有属性不能继承。)
作用:子类通过继承可以获得父类的属性和方法,提高开发的效率及代码的复用率。
2.继承如何表示
class 子类名(父类名):
pass
子类可以实现自己独有的方法;父类当中不能调用子类方法;python中的继承是单边继承,只能子类继承父类。
当子类和父类具有同样的方法或者属性的时候,父类还是用父类的,子类不再用父类的,而是用自己的。
3.重写父类方法
重写:就是子类中,有一个和父类相同名字的方法,在子类中的方法会覆盖掉父类中同名的方法。
调用重名的父类方法:
方式一:父类名.方法名(self)
方式二:super().方法名()
super() 超继承