首页 > 其他分享 >包&封装&继承总结

包&封装&继承总结

时间:2023-12-28 20:44:06浏览次数:29  
标签:总结 封装 name 构造方法 继承 成员 变量

总结

包package概念

概念:简单的理解包就是一个文件夹。

包作用

① 方便管理项目中的类等文件。
② 可以避免类名冲突的问题。

使用包

定义包

包命名规范:一般是公司域名反写.项目名.模块名字.子模块名;
要求:包名是全英文小写。

package cn.itsource.packagedemo;// 声明包

导入包

为什么要导包?
当我们需要使用别人或者JDK中的类的时候,就需要告知JVM从什么地方去加载这个类,这个过程就是导包。

其实本质是导入包中的类。
导入包的语法 : import 包名.子包名.类名;
现在用eclipse工具自动导包,快捷键:ctrl + shift + o
注意:
1.导入包的代码应该在声明包(就是该类所在的包)的后面,声明类的前面。
2.import java.util.*; 表示导入本包中所有会使用到的util包中的类,只会导入util包下面直接的类型,不包括util包的子包中的类型。
3.java.lang是核心包,下面的直接类型是自动导入的;
例如:String、System类,lang包的子包中的类型不会自动导入,需要手动导入。
4.在一个类中会用到同名不同包的时候必须使用全限定路径

封装

  • 为什么要封装

    Java中是通过封装来完成保护内部成员的目的,所以,这就是我们学习封装的目的。

  • 封装的作用

    封装是为了保护内部数据的安全:

    1. 不希望在外部类中随意访问类中的成员变量
    2. 达到权限要求的才能访问。
    3. 只是获取数据的时候。例如:单例模式。
  • 怎么封装

    步骤:

    1. 私有化成员变量(用private修饰成员变量)。
    2. 为每一个成员变量提供合理的public修饰的:
      getXxx()方法 获取成员变量的值,如果当前成员变量类型是boolean类型,将getXxx()改为isXxx()。
      setXxx(...)方法 设置成员变量的值。
    3. 提供一个无参构造,有参构造根据需求确定是否要写。
    4. 该类用public修饰。
  • 封装的注意事项

    1. 不是只有private才叫封装,private只是最大限度的封装而已。
    2. get和set方法都是只能获取或者赋值一个成员变量,不能set(String n, double m, boolean v)赋值3个成员变量。
    3. 单一职能原则:功能最小化,不要想着一个方法写完所有的功能,因为代码复用率高。
  • 封装小结

    对象赋值的方式:

    1. 有参构造 :new 类名(...);
    2. 对象名.setXxx(...);
    3. 对象名.成员变量 = 值;// 封装后不能用
      一般配合使用,如果成员变量比较少,可以直接用有参构造。
      如果成员变量比较多,一般用无参构造 + setXxx(...)。
      如果对象已经创建,需要修改值,用setXxx(...)。
      3.对象取值的方式:
    4. 对象名.getXxx(); / 对象名.isXxx()
    5. 对象名.成员变量 ;// 封装后不能用

this

  • 1.this的概念:

    this指代当前对象,即,哪个对象调用就指代哪个对象。

  • this使用

    1. 解决局部变量和成员变量的二义性【set方法和有参构造中形参跟成员变量同名不同义】

      public Account(String name) {
      	// 在方法中使用变量的时候,优先从局部范围找,就近原则
      	// 这里因为成员变量和局部变量名字相同,存在二义性问题
      	// 要解决二义性问题,就需要用到this,加上this,就会直接从成员变量位置找name
      	this.name = name;
      }
      
    2. 本类中构造方法之间的相互调用,但是必须是构造方法内的第一句。

      语法:this(...); 调用本类中的另一个构造方法,并不会创建额外的对象,会根据参数自动匹配调用对应的构造方法。
      作用:
      	1.可以创建对象的时候,给定某些成员变量默认值
      	2.可以复用其它构造方法,简化给成员变量赋值的代码
      例如:
      // 1.可以创建对象的时候,给定某些成员变量默认值
      public Account(String name) {
      	// name和111111都是String类型,只不过name是一个变量,而111111是一个写死的值
      	// 并通过该构造方法创建的对象都有相同的   【默认密码】
      	this(name,"111111");// 必须是构造方法内的第一句,这里调用的是有两个String参数的构造方法
      }
      public Account(String name,String pwd) {
      	// 要解决二义性问题,就需要用到this,加上this,就会直接从成员变量位置找name
      	this.name = name;
      	this.pwd = pwd;
      }
      			
      // 2.可以复用其它构造方法,简化给成员变量赋值的代码
      public Account(String name,String pwd,double money) {
      	/*
      		this.name = name;
      		this.pwd = pwd;
      		可以使用下面的方式,this(...)简化代码
      	 */
      	this(name,pwd);// 复用上面的有两个String参数的构造方法,简化代码作用
      	this.money = money;
      
  • this注意和小结

    • this用途:
      1. 解决局部变量和成员变量的二义性(掌握)
      2. 在本类之间,构造方法之间的相互调用this()调用无参数的构造方法,this(...)可以添加参数, 表示调用有参数的构造方法 (掌握)
      3. this作为参数传递,this作为返回值 (了解)
    • this注意事项:
      1. this不能在静态的方法中使用: 无法从静态上下文中引用非静态成员this。
      2. static是类级别,this是对象级别
        static修饰的是属于类。
        this是属于某一个具体的对象。

继承

  • 继承引入

    image-20231210091316948

    三个类都有重复的代码,可以把这共同的代码抽出去,抽出去放到另外一个类里面;下面的3个类和上面的类需要发生一点关系(继承),上面的类叫做 父类(超类,基类,根类),下面的类叫子类(派生类,拓展类);
    好处 : 提高了代码的复用性

  • 继承作用

    代码复用,提高开发效率和程序的扩展性。

  • Java中类继承的基本语法

    ① Java类中的继承的语法格式:
    class A{}
    class B extends A{}
    A 就是B的父类、基类、根类、超类
    B是A的子类、派生类、拓展类
    ② 验证:子类中是否可以继承到父类中的东西(通过创建子类对象来操作从父类继承的东西)

  • 子类可以从父类继承哪些成员

    除了构造方法private修饰的属性和方法外不能被继承其他都可以继承过来
    但是,私有化成员不能直接通过子类对象直接访问,但是可以通过继承过来的公共方法间接访问。

  • Java中类的继承特点

    ① 单继承(一个类只能够有一个直接父类)
    ② 多重继承(多层级的继承), 一个类可以有子类,子类还可以有子类...

    ③ 每一个类都有一个直接父类,如果没有看到显示的继承代码,那么就隐式继承Object

标签:总结,封装,name,构造方法,继承,成员,变量
From: https://www.cnblogs.com/JunYuanStudy/p/17933527.html

相关文章

  • 2023-2024-1 20231329 《计算机基础与程序设计》第14周学习总结
    作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里2022-2023-1计算机基础与程序设计第14周作业(https://www.cnblogs.com/rocedu/p/9577842.html)这个作业的目标《C语言程......
  • 2023-2024 20231313《计算机基础与程序设计》第十四周学习总结
    2023-202420231313《计算机基础与程序设计》第十四周学习总结作业速达作业课程班级链接作业要求计算机基础与程序设计第十四周学习总结作业内容《C语言程序设计》第13章并完成云班课测试作业正文我的作业目录教材总结总结学习过程中的问题《C语言程......
  • 四川大学网络空间安全学院暑期实训总结
    实习目的、要求:本次实训以网络与信息安全实用化人才培养体系为指导,以学生在校实际学习课程为理论基础,主要通过对各个网络安全漏洞原理的实际训练,使学生掌握基于云计算、WEB服务等方面的漏洞原理和利用方法。培养学生实际动手操作能力以及理论转化运用能力,除了基础理论......
  • PC9094超小体积封装可编程过流过压保护IC
    概述:PC9094过电压和过电流保护该器件具有低80mΩ(TYP)导通电阻集成MOSFET,主动保护低电压系统的电压供应故障高达+29V直流电。输入电压超过过电压阈值将导致内部MOSFET关闭,防止损坏下游的过大电压设备。过电压保护阈值默认为6V。2.3V/3.6V/11V/16V/23V还有其他版本OVP和无OVP。PC9094......
  • 12.28每日总结2
    今天下午接着写软件企业文化的大作业市场推广 确定目标市场:首先,你需要确定你的目标市场是谁。考虑该技术最适合哪些行业或领域,并了解这些市场的需求和痛点。深入了解竞争环境:研究类似的软件技术是否已经存在,了解竞争对手的优势和劣势。这有助于你们找到与众不同的竞争优势,并确......
  • Java-继承:重载与重写的区别
    一、重写(Override)子类继承父类,子类重写父类中的所有公共方法,覆盖父类的方法并对其重写。注意事项:重写前后方法名相同;参数列表相同;返回值相同子类重写的方法所抛出的异常必须与父类中的被重写方法的异常一致,或者不能比父类的异常范围更大。父类的私有方法不能被重写,如果子类非要......
  • 使用hook封装表格常用功能(react)
    实现内容配置分页:usePagination生成过滤项:useFilter获取表格选择配置:useSelect生成批量删除按钮:useDelete生成模态框:useModal示例render部分:<React.Fragment><Formlayout="inline">{DeleteEle}{FilterEles}</Form><Table{...{......
  • #1全职独立开发两周总结
    ......
  • java客户端访问nacos配置使用总结
    客户端访问nacos配置:父工程:com.alibaba.cloudspring-cloud-alibaba-dependencies2021.0.5.0pomimport子工程:<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</art......
  • 封装一个表情包组件(支持自定义表情图片)(基于vue3语法)
    效果图文件图直接贴代码emotion.vue<template><divclass="emotion-containerbeauty-scroll-livechat"><divclass="emotion-btn"@click="toggleEmotionShow"><spanclass="iconfonticon-biaoqing1&quo......