首页 > 其他分享 >封装与继承

封装与继承

时间:2024-08-29 10:24:24浏览次数:6  
标签:封装 构造方法 package 继承 子类 访问 父类 super

1.封装

1.1封装的概念:

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

把尽可能多的东西藏起来,对外提供便捷的接口

1.2如何实现封装

一,修改属性的可见性

(设为private,防止错误的修改)

二,创建共有的·getter/setter方法

(用于属性的读写)

三,在getter/setter方法中加入属性控制语句

(对属性值的合法性进行判断 )

1.3封装的好处

便于使用者正确使用系统,防止错误修改属性

有助于系统之间的松耦合,提高系统独立性

提高软件的可重用性

降低了构建大型系统的风险

2.包

2.1为什么需要包

Windows树形文件系统

文档分门别类,易于查找和管理

使用目录解决文件同名冲突问题

使用包存放两个同名的类而不冲突

2.2包的作用

允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件

有助于实施访问权限控制

防止命名冲突区分名字相同的类

2.3如何创建包
package cn.jbit.inherit;   //声明包
public class School {
          ……
}

作为Java源代码第一条语句

用package声明包,以分号结尾

2.4包的命名规范

·包名由小写字母组成,不能以圆点开头或结尾

package mypackage;

·包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名

package net.javagroup.mypackage;

·包名后续部分依不同机构内部的规范不同而不同

package net.javagroup.research.powerproject;
2.5如何导入包

为了使用不在同一包中的类,需要在Java程序中使用import关键字导入这个类

import   包名. 类名;
    
    
import java.util.*;      //导入java.util包中所有类
import cn.jtest.classandobject.School;    //导入指定包中指定类
  1. 系统包:java.util

  2. 自定义包:cn.jtest.classandobject

*: 指包中的所有类

School :指包中的School类

2.6使用包的注意事项

一个类同时引用了两个来自不同包的同名类

必须通过完整类名来区分

每个包都是独立的,顶层包不会包含子包的类

package和import的顺序是固定的

package必须位于第一行(忽略注释行)

只允许有一个package语句

其次是import

接着是类的声明

3.类的访问

3.1类的访问修饰符

public修饰符:公有访问级别

默认修饰符:包级私有访问级别

3.2类成员的访问修饰

3.3static修饰符

static可以用来修饰

成员变量

静态变量,可以直接通过类名访问

成员方法

静态方法,可以直接通过类名访问

代码块

静态代码块,当Java虚拟机加载类时,就会执行该代码块

static代码块

JVM加载类时,加载静态代码块

如果有多个静态块,按顺序加载

每个静态代码块只会被执行一次

4.继承

4.1使用继承

编写父类

[访问修饰符] class Pet { 
    //公共的属性和方法
}

编写子类,继承父类

[访问修饰符] class Dog extends Pet { 
    //子类特有的属性和方法
}

继承是Java中实现代码重用的重要手段之一。Java中只支持单根继承,即一个类只能有一个直接父类

4.2理解继承

子类访问父类成员

访问父类构造方法

super();    
super(name);

访问父类属性

super.name;

访问父类方法

super.print();

(1)使用super关键字,super代表父类对象

(2)在子类构造方法中调用且必须是第一句

(3)不可以访问父类中定义为private的属性和方法

子类继承父类的什么?

继承public和protected修饰的属性和方法,不管子类和父类是否在同一个包里

继承默认权限修饰符修饰的属性和方法,但子类和父类必须在同一个包里

总结:

super关键字来访问父类的成员

super只能出现在子类的方法和构造方法中

super调用构造方法时,只能是第一句

super不能访问父类的private成员

4.3继承条件下的构造方法

子类构造方法没有通过super显式调用父类的有参构造方法,也没通过this显式调用自身其他构造方法

系统默认调用父类的无参构造方法

子类构造方法通过super显式调用父类的有参构造方法

执行父类相应构造方法,而不执行父类无参构造方法

子类构造方法通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则

标签:封装,构造方法,package,继承,子类,访问,父类,super
From: https://blog.csdn.net/nice66660/article/details/141671067

相关文章

  • PHP8面向对象快速入门三 类的继承 类方法属性重写和final关键字 parent调用父类的方法
    在PHP中,类的继承(继承)是一种机制,允许一个类继承另一个类的属性和方法,从而实现代码的重用和扩展。继承可以帮助你创建一个基于现有类的新类,保留原有类的特性并增加或修改其功能。classAnimal{public$name='dongwu';protected$age=1;private......
  • 《C++中的友元:打破封装的神秘力量》
    在C++的编程世界里,友元函数和友元类就像是一把特殊的钥匙,可以打开封装的大门,让特定的函数或类能够访问其他类的私有成员。这一特性在某些情况下具有重要的作用,让我们一起来深入探讨C++中的友元函数和友元类有什么作用。一、热点关注:友元为何引发热议?在面向对象编程中,封......
  • Visual Basic中的继承艺术:构建代码的层级之美
    标题:VisualBasic中的继承艺术:构建代码的层级之美在面向对象编程的殿堂中,继承是一种强大的机制,它允许新创建的类(子类)继承现有类(父类)的属性和方法。VisualBasic(VB.NET)作为.NET家族的一员,完美地支持了继承的概念。本文将深入探讨VB.NET中继承的工作原理,并通过详细的代码示例......
  • 在做结果集封装时,若结果集表头与成员变量名不一致该如何解决?
    目录1.通过别名映射为一致:as子句2.使用resultMap3.在配置文件中开启适配规则在Score实体类中,我们定义了studentId、courseId、score、status,而在数据库中,我们设置如下:1.通过别名映射为一致:as子句在持久层接口中,我们定义了select1()方法,返回类型为List<Score>。由于......
  • 微信小程序 BLE 基础业务接口封装
    写在前面:本文所述未必符合当前最新情形(包括蓝牙技术发展、微信小程序接口迭代等)。微信小程序为蓝牙操作提供了很多接口,但在实际开发过程中,会发现隐藏了不少坑。目前主流蓝牙应用都是基于低功耗蓝牙(BLE)的,本文介绍相关的几个基础接口,并对其进行封装,便于业务层调用。蓝牙发展在开......
  • pygame封装连个常用控件
    #coding=utf-8importos,sys,re,timeimportpygameimportrandomfromwin32apiimportGetSystemMetricsfromtkinterimportmessageboxpygame.init()pygame.display.set_caption("我的控件")percent=0.6screen_width=GetSystemMetrics(0)screen_heig......
  • 使用FastAPI来开发项目,项目的目录结构如何规划的一些参考和基类封装的一些处理
    使用FastAPI开发项目时,良好的目录结构可以帮助你更好地组织代码,提高可维护性和扩展性。同样,对基类的封装,也可以进一步减少开发代码,提供便利,并减少出错的几率。下面是一个推荐的目录结构示例:my_fastapi_project/├──app/│├──__init__.py│├──main.py......
  • Python的继承
    #1.继承#就是让类和类之间转变为父子关系,子类默认继承父类的属性和方法#1.1语法#class类名(父类名):# 代码块#1.2单继承#classPerson:#  defeat(self):#    print("吃")#  defdrink(self):#    print('喝')#  def......
  • C++面向对象三大特性之一(封装)
    下面这篇文我来给大家分享C++面向对象三大特性之一(封装)。一、什么是封装?分装就是一个类中的私有成员,虽然类外不可以访问,但是我们提供一些公共的接口来间接让其他人访问到,例如一个人的名字我们起好之后就一般不会允许其他人改你的姓名,但是我们可以通过一些方式得到你的姓名......
  • js 封装日志上传模块,实现异常日志的上报
    封装定义日志上传模块,实现异常日志的上报,包含触发方式:1、主动调取方法上报2、覆盖原生console.error实现,收集所有console.error打印的日志3、window注册绑定error事件,触发 window.addEventListener('error',/***客户端日志上传模块,实现异常日志的上报*使用时在HTML......