# zb_java0726 **Repository Path**: climpeaker/zb_java0726 ## Basic Information - **Project Name**: zb_java0726 - **Description**: 面向对象--构造方法、继承 - **Primary Language**: Java - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2018-07-26 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # zb_java0726 # 课堂笔记 ## 1 面向对象 ### 1.1 面向对象的思想 面向对象解决问题的出发点:找谁去做。【谁就是对象,对象由类进行规范定义】 面向对象核心思想:抽象、封装、继承、多态。 面向的目的:代码复用。 面向对象编程实现: (1)创建一个类; (2)编写属性; (3)编写行为方法; (4)在测试类中使用new创建一个该列的实例对象; (5)调用该实例的行为方法; ### 1.1 封装 *构造方法* 构造方法是使用new创建类的实例对象时所调用的方法; 语法: 访问控制修饰符 类名(形参列表){ 构造方法体; } 注意: (1)构造方法是一类特殊的方法; (2)构造方法在类的外部只能通过new的方式进行调用;【除此以外,在类的外部无法调用构造方法】 (3)构造方法没有返回值类型,且方法名和类名一样; (4)jvm默认会给每个类提供一个不带参数的默认的构造方法。 (5)如果在一个类中写了自定义的构造方法, 则jvm提供的默认的构造方法失效,如果还需要使用,则需要显式写出该类的默认的构造方法。 (6)类的构造方法可以使用ide工具自动生成,右键--source--generate Constructors 然后选择不同的属性作为形参进行生成 (7)构造方法可以重载; (8)类在new是调用的构造方法;调用那个构造方法由实参列表决定; (9)构造方法在外部不能直接调用,但是构造方法之间可以通过 this(参数列表); 的方式进行调用; 使用this()的方式调用构造方法,要求this()必须在方法体的第一行; (10)构造方法可以初始化私有属性,但是只能执行一次;不同于set接口,set接口可以调用多次; 代码[com.yuw.oop.test01.MyPoint、com.yuw.oop.test01.MyPointTestDriver]: 参见以上两个类即可; *类的初始化语句块* 直接写在类中的语句块就是类的初始化语句块;也叫作类的非静态语句块; 写在成员变量位置的语句块就是类的初始化语句块; 注意: (1)类的初始化语句块每次执行new的时候会调用一次; (2)类的初始化语句块是在构造方法之前执行; (3)可以用于类的属性的初始化处理;【第三种初始化私有变量的途径】 代码[com.yuw.oop.test01.MyPoint、com.yuw.oop.test01.MyPointTestDriver]: 参见以上两个类即可; ### 1.2 包和访问控制修饰符 * 1 包 关键字 :package import java中引入了包的机制,是一种分而治之的管理思想; 包的关键字是package;包的命名规范:组织域名倒写的方式进行命名,全小写; 自定义包路径不能以 java开头; java中的默认包:java.lang; 除了默认包lang包中的类,其他类在使用时需要使用 import语句将包路径引入,才可以使用;【告诉编译器该类的来源】 使用import引入指定包路径的类时,可以使用*通配符,表示引入该包下所有的类; 在一个包中不能有同名的类;不同包中可以有同名的类; 每个类都需要使用package声明该类所在的包;如果没有package则默认在项目的根路径下; 包+访问控制修饰符是面向对象封装另外一个体现的方面; * 1 访问控制修饰符 java中常用的访问控制修饰符有: public protected 默认的(什么也不写) private 访问控制修饰符可以修饰: 类; 属性(成员变量); 行为(成员方法)【包含构造方法】; *访问控制修饰符的访问范围* | 访问控制修饰符 | 类内部 | 同包中 | 子类 | 外部 | | -------- |:-----:| :----: | ---- | --- | | public | 可以 | 可以 | 可以 | 可以 | | protected | 可以 | 可以 | 可以 | 不可以 | | 默认的 | 可以 | 可以 | 不可以 | 不可以 | | private | 可以 | 不可以 | 不可以 | 不可以 | ### 1.3 继承 * 1 继承的概念 在面向对象的思想的中,通过抽象和封装获取了描述对象的类; 继承就是使用已有类派生需要新创建的类;继承是父子类之间的关系; 目的:代码复用; 通过继承可以使子类获取父类中允许继承的属性和行为;在此基础之上,再进行子类的抽象和封装。 * 2 继承的语法 语法: 继承是类与类之间的关系;继承的关键字是:extends 访问控制修饰符 其他修饰符 class 子类名 extends 父类名{ // 属性; // 行为; } 解析: (1)继承是类与类之间的关系,关键字是extends; (2)java中的继承是单继承,一个类只有一个直接父类;【简单性】 【C++是多继承,一个类可以有多个直接父类】 (3)父类中那些属性和行为可以被子类继承又父类中的访问控制修饰符决定; (4)java中所有的类都是Object类的直接或间接子类;Object是java中的所有类根类; (5)构造方法不能被继承; 代码[com.yuw.oop.extendsdemo.*]: 参见包:com.yuw.oop.extendsdemo中的所有类; #### 参与贡献 1. Fork 本项目 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [http://git.mydoc.io/](http://git.mydoc.io/) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)