JavaSE基础-01-对象
来源:互联网 发布:图片设计软件 编辑:程序博客网 时间:2024/06/05 12:43
一.Java中的对象
1.1 对象的概念:
对象是将数据和操作数据的函数进行了封装。
1.2 成员变量和局部变量:
在对象中,变量分为成员变量(在类中定义)和局部变量(在方法中定义)
1.3 构造函数:
用于给特定对象(和函数名称相同的对象)进行初始化,是函数中的一种。所有对象创建时,都需要初始化,初始化需要调用构造函数
public class Construct{ Construct(){ //初始化操作 }}
1.3.1 构造函数的特点:
- 该函数的名称和所在类的名称相同(构造方法的方法名首字母大写)
- 不需要定义返回值类型
- 该函数没有具体的返回值
1.3.2 构造函数的使用:
1)一个类在定义时,如果没有定义过构造函数,那么该类中会自动生成一个空参数的构造函数,为了方便该类创建对象,完成初始化。如果在类中自定义了构造函数,那么默认的构造函数就没有了。
2)一个类中,可以有多个构造函数,它们的函数名称都相同,参数不同。一个类中如果出现多个构造函数。它们的存在是以重载体现的。
1.3.3 构造函数和一般函数的区别:
1.3.4 构造代码块
public class Construct{ { //初始化操作 }}
没有参数,定义有构造代码块的类,创建对象并初始化时都需要调用构造代码块。而构造函数则只在参数对应的情况下在初始化时执行
1.4 创建对象的过程:
创建一个对象:
Person person = new Person();
1)先将硬盘上指定位置的Person.class文件加载进内存。
2)执行main方法时,在栈内存中开辟了main方法的空间(压栈-进栈),然后在main方法的栈区空间中分配了一个变量person。
3)在堆内存中开辟一个实体空间,分配了一个内存首地址值。
4)在该实体空间中进行属性的空间分配,并进行了默认初始化。
5)对空间中的属性进行显示初始化。
6)进行实体的构造代码块初始化。
7)调用该实体对应的构造函数,进行构造函数初始化。
8)将首地址赋值给person ,person变量就引用了该实体。(指向了该对象)
1.5 static关键字
修饰符,用于修饰成员(成员变量和成员函数),静态修饰的数据可以被所有的对象调用。
1.5.1 静态成员:
1)被静态修饰的成员,可以通过类名调用,即:类名.静态成员(Person.name)
2)静态成员随着类的加载而加载,而且优先于对象存在。
1.5.2 static关键字使用时的注意事项:
静态方法只能访问静态成员,不可以访问非静态成员。因为静态方法加载时,优先于对象存在,所以没有办法访问对象中的成员。同理静态方法中不能使用this,super关键字来获取指定的对象
1.5.3 静态修饰的使用的条件:
1)成员变量
如果成员变量的数据所有对象都需要使用,那么该变量就需要被静态修饰,因为是共享的数据。
2)成员函数
如果函数内访问了对象中特有的属性数据,那该方法不能被静态修饰。
1.5.4 成员变量和静态变量的区别:
1.5.5 静态代码块
一个有静态关键字标示的代码块区域,定义在类中。对类进行初始化。静态代码块随着类的加载而执行,而且只执行一次。如果和主函数在同一类中,优先于主函数执行(主函数也是静态的)。
静态代码块、构造代码块、构造函数同时存在时的执行顺序:静态代码块 > 构造代码块 > 构造函数
二.面向对象的特点—–封装
隐藏对象的属性和实现细节,对外提供公共的访问方式。达到将隐藏细节,提高重用性和安全性的目的。
2.1 成员的访问权限:
通过几个关键字实现权限控制:
1)private关键字:
将成员定义为私有,私有的访问权限最低,只有在本类中的方法才可以访问,其他类只有通过本类对外提供的访问方式来完成对私有属性的访问
2)public关键字:
将成员定义为共有,其他类和属性可以访问并更改该属性的值
三.面向对象的特点—–继承
提高了代码的复用性,让类与类之间产生了关系,是多态的前提。
父类:是由多个类不断向上抽取共性内容而定义的。
3.1 Java中的继承机制:
1)Java只支持单继承
C++支持多继承,但是多继承有安全问题的弊端
2)Java支持多重继承
Java支持多重继承因此出现了继承体系。体系中的顶层父类是通过不断向上抽取而来的。它里面定义的是该体系最基本的共性功能。
所以,一个体系要想被使用,直接查阅该系统中的父类的功能即可知道该体系的基本用法。使用一个体系时,需要建立对象。建议建立最子类对象(继承体系最下面的子类的对象),因为最子类不仅可以使用父类中的功能。还可以使用子类特有的一些功能。即对于一个继承体系的使用,先查阅顶层父类中的内容,创建最底层子类的对象使用。
3.2 继承体系中的成员:
3.2.1 成员变量
当子父类中出现一样的属性时(实际开发中基本不会遇到这种情况),子类类型的对象,调用该属性获取到的值是子类的该属性的值。
如果想要调用父类中的属性值,需要使用super关键字
this:代表是本类类型的对象引用。
super:代表是子类所属的父类中的内存空间引用。
3.2.2 成员函数。
当子父类中出现了相同的方法时,建立子类对象会运行子类中的方法。即父类中的方法被覆盖(复写,重写)了。当一个类的功能内容需要修改时,通过覆盖来实现。
3.2.3 构造函数。
子类对象在创建并初始化时,先调用父类的构造函数,再调用子类的构造函数。
子类的所有构造函数中的第一行,其实都有一条没有显示的语句super( ),调用父类的空参构造函数,如果父类中没有空参数的构造函数,那么子类的构造函数内,必须通过super语句指定要访问的父类中的构造函数。
3.3 继承的使用场合:
当类与类之间存在着所属关系时,才具备了继承的前提,不要仅仅为了获取其他类中的成员进行继承。
继承的方法覆盖
1)子类的方法覆盖父类的方法时,必须要保证,子类方法的权限必须大于等于父类方法权限
2)静态修饰的成员只能覆盖静态成员,或者被静态成员覆盖
继承的弊端
打破了封装性。对于一些类,或者类中私有的功能或属性,是需要被继承或者复写的,这些属性需要使用final关键字修饰
Final关键字
修饰符,可以修饰类,方法,变量。
被final修饰的类是一个最终类,不可以被继承。
被final修饰的方法是一个最终方法,不可以被覆盖。
被final修饰的变量是一个常量,只能赋值一次。
- JavaSE基础-01-对象
- JavaSE基础学习笔记-面向对象01
- 01javaSE基础 javaSE环境变量
- javaSE编程基础(面向对象)
- JAVASE----01----基础
- JavaSE基础01
- javase基础01
- JavaSE基础01
- JavaSE基础复习二:面向对象知识点
- JavaSE基础复习:面向对象知识点二
- 黑马程序员----【javaSE基础】复习--面向对象
- JavaSe基础XX05——面向对象
- JavaSe基础XX06——面向对象
- JavaSe基础XX07——面向对象
- JavaSe基础XX08——面向对象
- JavaSe基础XX09——面向对象
- JavaSE基础--(三)面向对象 部分
- JavaSe基础(5)-- 类和对象
- js如何获取哪些复选框被选中
- HDU 5226 Tom and matrix 组合数求和+Lucas定理.
- H5与android客户端JS交互方案
- vue初识
- [iOS]APP中保存图片到相册时崩溃
- JavaSE基础-01-对象
- 阿里云移动测试平台使用教程
- Dispatcher
- Azure 虚拟机上的 SQL Server 常见问题
- [题解] NOI2002 银河英雄传说 (并查集)
- C++笔记——拷贝构造函数1
- 2年Java开发工作经验面试总结
- 基于Spring Boot、Spring Cloud、Docker的微服务系统架构实践
- myrocks ttl的使用