一、类与对象的定义及使用:
所谓的类是共性的概念,而对象指的是一个具体事物。
1、定义与使用
通常来讲,一个类包含类名、属性、方法三部分,如果要使用类方法,则需实例化一个类对象去调用。
实例化对象的方法:类名称 对象名称 = new 类名称();
下面定义一个Person类,并且实例化一个对象:
二、类与对象相关知识点总结:
1、对象的产生需要以下三步:
1)、加载类
2)、为对象开辟内存空间
3)、调用合适的构造方法 --->构造方法不止有一个
2、对象的初始化顺序:
静态代码块 --> 实例代码块 --> 构造方法
被static所修饰的代码块加载的时候就会执行, 对于多个被static修饰的代码块,谁在前面谁先执行。
3、对象属性的初始化方式:(3种方式)
1)、提供一系列的setter和getter方法
2)、通过构造函数的重载
3)、利用静态代码块和实例代码块(静态代码块和实例代码块,在构造函数之前被调用, 静态代码块只会被初始化一次。)
4、如何理解this? —> this代表对象的引用
使用: this.name 调属性
this.func() 调方法
this(string name,int age) 在一个构造函数中,可以调用另外的构造函数,必须写在第一行
5、面向对象三大特性;
1)、封装:把客观事物封装成抽象化的类,类里面的数据和方法对内部开放,对外隐藏并且提供访问的方法。
2)、继承:继承是指可以使用已有类所有的功能,并且在不改变原有类的情况下对这些功能进行扩展。
3)、多态:所谓多态就是指一个类实例的相同方法,在不同情形下有不同表现形式。
三、面向对象三大特性之封装
1、private实现封装:
封装简单来讲就是将类内部属性保护起来,可以使用private关键字实现简单封装。使用private实现的封装,只允许本类访问属性,而不允许外部类访问。
2、类的设计原则:
1)、类中的所有属性必须使用private封装。
2)、属性若要被外部访问,必须定义一系列setter和getter方法。
3、构造方法:
所谓构造方法,就是指使用关键字new实例化新对象时要调用的操作方法。
对于构造方法的定义,需要遵循以下原则:
1)、方法名必须与类名称相同
2)、构造方法没有返回值类型声明(编译器根据程序结构区分构造方法和普通方法,因此没有返回值)
3)、每一个类中至少存在一个构造方法(如果没有明确定义,系统会默认生成一个无参构造方法)
重点:实例代码块优先于构造函数执行,静态代码块优先于实例代码块执行,有固定的规则。
4、构造方法可以重载:
构造方法的调用和对象内存分配几乎是同步完成的。因此,我们可以利用构造方法的重载,为类中的属性进行初始化操作,从而避免多次setter调用。
5、static关键字
1)、static属性(类属性):
普通属性保存在堆内存中,且每个对象独享属性。
如描述共享属性,只需在属性前添加static关键字,此时属性保存在全局数据区内存中,不受对象实例化控制,所有对象都可以访问该数据区。
在定义类时,以非static属性为主,一般都不考虑static属性。
2)、static类方法:
以static定义的类方法不属于对象,直接通过类名去调用。
所有的static方法不允许调用非static定义的属性或方法,所有的非static方法允许访问static方法或属性。