Java中封装、继承和多态的特性你了解多少?

【Java 基础】-- Java 的三大特性:封装、继承和多态 理解并掌握这三大特性,可以帮助开发者编写出更清晰、模块化和高效的 Java 代码。如果你有任何问题或见解,欢迎留言讨论!这三大特性是 Java 代码可维护性、可扩展性和重用性的关键。本文将详细介绍这三大特性,并提供示例代码帮助理解。Java 作为一门面向对象的编程语言(OOP),其核心特性包括。,从而实现代码复用的机制。在 Java 中,封装通常通过。关键字访问父类的属性和方法。在 Java 中,继承通过。Java 的三大特性——是面向对象编程的核心。 阅读详情

一谈到Java肯定就要谈到面向对象,万物皆对象是每个Java学习者都听了不知道多少遍的话,然而很多刚学编程的人学到这里会一脸懵逼,就算跟着教程一步一步敲代码了,也就知道建个类要加class关键字,也知道类有属性和方法,也知道继承用extends关键字。至于属性和方法具体怎么声明和定义,继承后子类和父类的关系具体又是怎样的,就云里雾里了。

本文会尽量用最通俗易懂的语言来描述面向对象中的三大特性,这个东西比较抽象,学会的话就觉得在码代码的时候用起来特别方便,不会的话就会觉得太难了。任何一本Java书籍或者视频在讲到面向对象这一块的时候,都会花比较多的篇幅来讲解,本文也达不到将所有知识点全部讲出来,因为其中的细节确实挺多,而新手懵也就懵在了这么多细节上了。不过,最开始学习的时候你只需要掌握平常的基本使用就可以,至于其他细节在使用的过程中就会慢慢学会!

思路

了解一个东西怎么使用其实不难,就好像你要去了解一个杯子具体是怎样生产的和背后生产的原理,你肯定要懵,但是只让你拿一个杯子去装水却轻而易举,你在使用的过程中完全不需要关心杯子的细节,你只需要会用就行。

而很多人问题就出在这里,大部分人是“杯子”是什么都没弄清楚,脑袋里就压根没“杯子”这个概念,就更不用谈去使用“杯子”了。 所以,本文的重点就是让大家理清面向对象中 封装、继承和多态 这三个概念,代码会贴的比较少。让大家知道“杯子”大概是怎么就行了,后续的使用过程中会掌握更多细节的。

在讲解具体的概念之前,要和大家强调一点: 面向对象是为了方便我们构建代码,并不是增加我们构建代码的难度!!! 面向对象是为了方便我们构建代码,并不是增加我们构建代码的难度!!! 面向对象是为了方便我们构建代码,并不是增加我们构建代码的难度!!!

一定要以,啊我多了一个特别好用的工具,这种思维来去学习,而不是以,啊我多了一个负担这种思维

封装

封装只是一种概念,也是面向对象非常重要的一个特性。

其实封装在我们生活中无处不在,在平常构建代码的过程中也经常用到封装,封装就是隐藏细节: 你到银行取钱你只需提供银行卡和密码,柜员会将卡里的钱给你,至于柜员是在柜台后面如何验证你的密码、余额,又是如何从金库里拿到现金再给你,你都不知道也无需知道,这就是封装。银行封装了柜员在柜台后面操作的细节 再比如你到餐厅里去吃饭,你点好菜之后只需要等待服务员将菜端上给你,而不知道这个菜是如何做好的,这也是封装。餐厅封装了厨师在厨房里做菜的细节。

生活中封装的例子随处可见,在程序中封装也无处不在: 你调用Java库中的某个方法来实现某个功能,你只需要传入正确的参数即可让方法运行达到你想要的目的,至于方法内部进行了怎样的操作,具体是怎样完成这个功能的你都不知道也无需知道。方法封装了方法内部的细节。 你使用某个类的实例,你创建出一个对象,你如愿以偿拿到了对象的引用,但是这个对象具体是怎样构造出来的你不知道,构造函数里的细节你不清楚,你也不会知道有哪些私有数据,要操作这个对象一律得通过提供的方法来调用。构造函数封装了对象初始化流程。private封装了对象的私有数据成员

所以封装的主要目的就是隐藏细节,将对象当做黑箱进行操作。

继承

面向对象中子类继承父类,主要是为了避免重复的行为定义,比如Animal类你定义了 体重、年龄等多个属性,又有 吃东西、玩等多个行为,然后你又想弄出一个Dog类,你会发现Dog类我要定义的属性和行为Animal类都有,那我就无需再重新定义一遍了,直接将Dog类继承Animal类,就会让Dog类拥有Animal类的属性和行为。

不过并非为了避免重复定义行为就要使用继承,滥用继承而导致程序维护上的问题时有耳闻。如何正确判断使用继承的时机,以及继承之后如何活用多态,才是学习继承的重点。而这些在我们没有理清继承的概念之前是无法做到的。

理清继承的概念,可以简单使用 “is-a”来判断子类和父类的关系,中文称为“是一种”的关系。简单来说,如果你可以这样描述:B是一种A,那么B继承了A。能通过“is-a”测试,在逻辑上和程序中就能顺利使用继承关系

比如现在Dog类和Cat类继承了Animal类:

/*创建两个对象,这肯定没问题*/
Dog dog = new Dog();
Cat cat = new Cat();

/*这两句也可以通过编译*/
Animal animal1 = new Dog(); // Dog是一种Animal
Animal animal2 = new Cat(); // Cat是一种Animal

/*但是下面两句就无法通过编译*/
Dog dog = new Animal(); // Animal不一定是Dog,所以编译失败
Cat cat = new Animal(); // Animal不一定是Cat,所以编译失败
复制代码

前两段代码通过了“is-a”测试,自然是没什么问题,而第三段代码就没有通过“is-a”测试,所以自然编译失败。编译器就是语法检查器,检查的方式是从 = 号右边往左读:右边是不是一种左边呢(右边类是不是左边类的子类)?

上面代码不管是从逻辑上还是程序上都好理解,我们来看下面的代码:

Animal animal = new Dog(); // Dog是一种Animal,这一行可以通过编译
Dog dog = animal; // 这一句话编译失败
复制代码

第一行没话说,都知道能通过编译,那么第二行是为啥编译失败呢? 编译器检查语法一次只看一行,它又无法联系上下文来做阅读理解,animal你是用Animal类来做声明的,自然而然编译器将就你认定为Aniaml类,尽管你指向的是子类Dog,但是animal现在的“身份”还是Aniaml类。所以,第二行无法通过“is-a”测试,编译失败。

编译器会检查父子类之间“is-a”关系,如果你不想要编译器啰嗦可以叫它住嘴:

Animal animal = new Dog();
Dog dog = (Dog)animal;
复制代码

对于第二行本来编译器是要提示你,animal不一定是Dog类的对象哦,但是你加上强制类型转换让它住嘴了,编译器就让这段代码通过编译了,不过后果得自行负责

就上面这个代码来说,animal确实指向了Dog类实例,所以第二行让Dog实例转换成Dog并没有什么问题,执行期间也不会出错。但是下面代码可以通过编译,但是运行时却会报错:

Animal animal = new Dog();
Cat cat = (Cat)animal;
复制代码

你让编译器闭嘴了,编译器让你通过了编译,不过在运行时发现animal明明是指向的Dog类,你让Dog转换成Cat那肯定是不行的!因为Dog并不是一种Cat。

综上所述,使用“is-a”原则就可以判断何时编译成功,何时编译失败,并留意指向的实例类型,就可以判断何时扮演成功,何时会抛出异常! 然后在要使用继承前,也可以在逻辑上判断是否该使用继承: 狗是动物吗?是的,所以狗继承动物没有一点问题。猫是动物吗?是的,所以猫继承动物也没有一点问题。树是一种动物吗?不是,这在逻辑上说不过去,所以在程序中也不应该让树继承动物类,否则会导致程序的整体逻辑混乱。 在程序中,并没有任何限制可以防止你不继承某个类,你当然可以让Tree extends Animal,但是这样是完全不合理的,作为开发者应当避免这种乱继承的行为!

上面这个例子还非常好判断,但是将来开发的过程中各种类的关系错综复杂,就需要好好理清“is-a”关系了。 比如 酒店浴室是一种浴室吗?是的,那让酒店浴室类继承浴室没有问题。家用浴室是一种浴室吗?是滴,让家用浴室继承浴室类也没有问题。 那么,浴盆是一种浴室吗? 好像挺有关系的,不过稍微一琢磨倒也能理清,浴盆与其说 is a 浴室,倒不如说 浴室 has a 浴盆,这就牵扯到另一个原则了 “has-a” 原则,中文来说就是 “有某个”东西。 浴室里可以有浴盆,所以浴盆应当是浴室的一种属性,而不是一种子类。所以将浴盆定义成浴室的属性就要比浴盆继承浴室要好很多!

理清继承,用最简单的办法就是: “is-a”原则帮助你判断父子类的关系,“has-a”原则帮助你判断类与成员的关系!

多态

多态,即多种形态或者多种状态。听起来挺深奥,其实非常简单,多态在生活中也无处不在: 假设你现在开了一个宠物店,提供给宠物洗澡的服务,于是你吩咐店员贴一个公告,咱们店可以给所有哈士奇洗澡!于是附近的居民都带着哈士奇过来洗澡了,你高兴的不得了,因为赚了钱。 这个用程序的语言来描述就像你这个宠物店给大家提供了一个方法:

// 参数是哈士奇类,执行的功能洗澡
public static void shower(哈士奇 h);
复制代码

但是好像有一个问题,有居民带着一个金毛过来准备给金毛洗澡,但是店员不允许金毛过来洗,因为你吩咐的就是让哈士奇洗,金毛并不是哈士奇,所以不行。 又有其它居民带着萨摩耶、柴犬啥的过来,店员都把他们拒之门外了,更有甚者还有人带着猫过来,那就更不用多说了,不准洗。 你失去了很多顾客,但是你还没办法生气,因为店员尽责得执行了你下达的指令:

shower(哈士奇类的对象);	 // 通过,因为传进来的参数是匹配的
shower(金毛类的对象); 	 // 报错,因为传进来的参数类型不是哈士奇
shower(萨摩耶类的对象); 	 // 报错,因为传进来的参数类型不是哈士奇
shower(猫类的对象); 		 // 报错,因为传进来的参数类型不是哈士奇
复制代码

你发现自己好像做了一件傻事,自己明明是个宠物店却只限制让哈士奇过来洗澡,那自然生意就限制了很多很多。于是乎你决定让各种各样的宠物都可以过来洗澡,哈士奇,金毛也行,萨摩耶也行:

public static void shower(哈士奇 a); // 参数是哈士奇类,执行的功能洗澡
public static void shower(金毛 a);	// 参数是金毛类,执行的功能洗澡
public static void shower(萨摩耶 a); // 参数是萨摩耶类,执行的功能洗澡
public static void shower(猫 a);	// 参数是猫类,执行的功能洗澡
...
...
...
复制代码

你定义了一万个方法,因为宠物品种实在是太多了,你必须要考虑到各种各样的品种。然而你发现,这样成本太高了也太麻烦了,问题虽然能够解决但是却让你精疲力尽。o(╥﹏╥)o

于是你决定改变,你重新吩咐店员,只要是宠物(或动物)就都可以过来享受洗澡服务!这个指令一下达,生意立马就好了,O(∩_∩)O~ 因为别人不管是带着哈士奇过来还是金毛、萨摩耶或者猫过来,都可以。用程序描述就是:

// 参数是宠物(动物)类,执行的功能是洗澡
public static void shower(Aniaml a);

public static void main(String[] args) {
	shower(哈士奇类的对象);	// 通过,哈士奇类继承了Animal类
	shower(金毛类的对象); 	// 通过,金毛类继承了Animal类
	shower(萨摩耶类的对象); 	// 通过,萨摩耶类继承了Animal类
	shower(猫类的对象); 		// 通过,猫类继承了Animal类
}
复制代码

这就是多态的一种表现,你明明只限定了一个参数类型,但是传进来的参数却各种形态都有。 是不是方便到爆了?

而通过上述例子咱们也可以发现多态的达成条件: 要有继承 父类引用指向子类对象

你参数定义的是Animal类,传进来的参数虽然可以多种多样,但是也不能瞎传参数进来,得是继承了Animal类的子类才可以。 然后呢,参数类型是父类,传进来的却是子类,在方法里面我操作的实例也是子类对象,这就是前面我们演示“is-a”原则时所体现出来的:父类的引用指向子类的对象。

这个理解后,咱们再来深入一些: 你现在宠物店决定拓展业务了,不光要能提供洗澡的服务,还要提供喂食的服务,你帮主人照看宠物进食。宠物进食自然就是宠物的行为(方法),你是照看宠物进食,又不是你进食,所以宠物来到宠物店后,你就要让宠物自己进食(即调用宠物的进食方法)。 用程序语言描述就是:

// 宠物类
class Animal{
	// 进食方法
	public void eat() {
		System.out.println("本宠物吃东西啦~~~~~~");
	}
}

// 你学聪明了,参数一开始设置的就是宠物类,这样所有宠物都可以进来
public static void helpEat(Animal a) {
	// 然后再调用宠物本身的进食方法
	a.eat();	// 打印的结果自然就是 “本宠物吃东西啦~~~~~~”
}
复制代码

这么一看好像特别完美啊,但是你立马就发现问题了。每个不同的宠物品种喜欢吃的东西都不一样,吃东西的方式也不一样,可是现在你调用的是单一的宠物进食方法,不管是啥宠物进来打印的都是 “本宠物吃东西啦~~~~~~”。这就尴尬了,哈士奇是那种吃法,金毛是这种吃法,在你这难道就都变成了同一种吃法了吗。 所以要解决这个问题,应该体现出每个宠物品种自身的特性! 自身的特性用程序语言描述是啥呢? 就是方法的重写嘛:

// 哈士奇类继承了宠物类
class 哈士奇 extends Aniaml {
	@Override
	public void eat() {
		// 重写了父类的方法
		System.out.println("本哈士奇开始犯二地吃东西啦~");
	}
}

// 金毛类继承了宠物类
class 金毛 extends Aniaml {
	@Override
	public void eat() {
		// 重写了父类的方法
		System.out.println("本金毛开始随和地吃东西啦~");
	}
}

// 猫类继承了宠物类
class 猫 extends Aniaml {
	@Override
	public void eat() {
		// 重写了父类的方法
		System.out.println("本猫开始高冷地吃东西啦~");
	}
}
复制代码

各品种的宠物重写了方法后,你宠物店再进行服务的时候效果立马就不一样了:

helpEat(哈士奇对象);	// 传进来的参数类型是哈士奇类对象,打印结果是:"本哈士奇开始犯二地吃东西啦~"
helpEat(金毛对象);	// 传进来的参数类型是金毛类对象,打印结果是:"本金毛开始随和地吃东西啦~"
helpEat(猫对象);		// 传进来的参数类型是猫类对象,打印结果是:"本猫开始高冷地吃东西啦~"
复制代码

这就更能体现多态了,当父类的引用指向子类的对象时,调用的方法是子类重写后的方法,既体现了多种类型的传递,又体现了不同类型的特性。

多态是面向对象的核心机制,它将可扩展性达到了最好!

总结

面向对象的编程方式更贴近我们人类的理解和描述,很多人觉得难就是因为觉得这概念特别抽象,其实只要思路理清后,用平常生活中的思维去理解会发现使用面向对象时非常得心应手。

大家发现没有,这些特性其实在我们生活中随处可见,也非常好理解,这也就是我开头所说的:面向对象是为了方便我们构建代码,并不是增加我们构建代码的难度。

我个人认为,面向对象将程序语言描述和我们人类自然语言描述完美得结合在了一起。所以,面向对象只是比较抽象,但是并不难!希望大家理清思路后,带着愉快的心情去“享受”面向对象带来的便利!

 

最后针对于上面的技术知识点我总结出了相关知识点做成了文档和视频资料免费分享给大家

希望能帮助到您提高自己的技术升职加薪,也节省大家在网上搜索资料的时间来学习,也可以关注我一下以后会有更多干货分享。

领取方式:转发+关注,私信博主获取资料

 

rk3399 linux 5.10 usb 2.0设备上电概率性注册失败 先排除硬件上的问题,然后就烧录kernel 4.1的的镜像,多次测试也没有发现这个问题,所以排除了硬件上的问题,然后。查下usb hub和usb 4G的复位脚,写驱动都给它们配上了,但是还是存在这个问题。最后通过对比rk3399.dtsi发现少了个power-domains = ;多次开关机,发现usb hub和4G都通信失败了,这就有点奇怪了,按理说usb驱动是没啥问题的。加上后,重新编译烧录,重新测试没有发现这个问题了!先查看usb log。 阅读详情

相关推荐

保姆级教程:用LoRA微调Chinese-Mistral-7B模型,并一键部署到Ollama(附完整代码)

本文提供了一份详细的LoRA微调Chinese-Mistral-7B模型的保姆级教程,涵盖环境配置、数据预处理、微调实战、模型量化及Ollama部署全流程。通过实战案例和完整代码,帮助开发者快速构建专属中文大模型,适用于医疗、法律等垂直领域。

weixin_30369041的博客 251

Java系列——封装、继承、多态初了解

封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。将类的某些信息隐藏在类的内部,不允许外部程序进行直接的访问调用。通过该类提供的方法来实现对隐藏信息的操作和访问。隐藏对象的信息。留出访问的对外接口。​ 举个比较通俗的例子,比如我们的USB接口。如果我们需要外设且只需要将设备接入USB接口中,而内部是如何工作的,对于使用者来说并不重要。而USB接口就是对外提供的访问接口。

wct040923的博客 1万+

Windows 游戏 EXCEPTION_ACCESS_VIOLATION 修复:3类硬件问题与5步软件排查法

本文提供Windows游戏EXCEPTION_ACCESS_VIOLATION错误的终极修复指南,涵盖3类硬件问题(内存故障、显卡问题、超频不稳定)和5步软件排查法(文件验证、驱动更新、DEP调整等),帮助玩家彻底解决0xFFFFFFFFFFFFFFFF内存访问冲突问题。

weixin_31856057的博客 2489

【Java 学习】面向程序的三大特性:封装、继承、多态

面向对象程序三大特:封装、继承、多态。而类和对象阶段,主要研究的就是封装特性。何为封装呢?就是套壳屏蔽细节。public,protected,default,private。继承机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加新功能,这样产生新的类,称派生类(子类)。super该关键字主要作用:在子类方法中访问父类的成员。实现多态的条件:必须在继承体系下,子类必须要对父类中方法进行重写,通过父类的引用调用重写的方法。

Code哈哈笑的博客 5637

计算机网络实验——入侵检测系统实验

在图1所示的网络结构中,此方案的具体实施:在路由器Router1的接口1出方向配置入侵检测策略,在收到ICMP ECHO请求包时,丢弃并同步向日志服务器报告警告,此时,终端PC2和PC3无法对终端PC0和PC1执行ping操作,并且日志服务器将记录相应的警告信息;在实验一的基础上,添加扩展分组过滤器,指定需要进行检测的信息流的类别,将扩展分组和对应的入侵检测规则进行绑定,使得只对特定的信息流进行入侵检测。加载指定类别的特征库,这里的指定类别是 ios_ips 类别中的 basic 子类别。

放放的博客 1563

Python 上位机开发

首先,什么是上位机?上位机通常是指可以与下位机(如单片机、传感器等硬件设备)进行通信和交互,实现数据采集、控制指令发送以及数据处理和展示的计算机程序。 Python 作为一种高级编程语言,在开发上位机方面具有诸多优势。它拥有丰富的第三方库,使得开发过程变得相对简单和高效。

weixin_46807151的博客 4303

Java面向对象 - 封装、继承和多态

简介 面向对象的三个基本特征是:封装、继承和多态。 封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类)。封装和继承的目的都是:代码重用。而多态则是为了实现另一个目的 —— 接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。 本实训主要学习面向对象三大基本特性:封装、继承和多态。 第1关:什么是封装,如何使用封装 任务描述 相关知识 什么是封装 封装的意义 编程要求 测试说明 任务描述 本关任务:构造

aiains的博客 7052

用STM32CubeMX和HAL库,5分钟搞定TB6612驱动直流电机(附完整代码)

本文详细介绍了如何使用STM32CubeMX和HAL库快速配置TB6612驱动直流电机,包括硬件连接、CubeMX工程配置、电机驱动逻辑实现及进阶优化技巧。通过图形化工具和代码示例,即使是新手也能在5分钟内完成电机调速系统的搭建,大幅提升开发效率。

weixin_26854829的博客 266

封装、继承、多态

面向对象编程(Object-Oriented Programming, OOP)的三大特征是封装、继承和多态,它们共同构成了面向对象编程的基本原则,有助于编写模块化、可维护和可扩展的代码。

m0_74064480的博客 5246

12、信号采样与Z变换的全面解析

本文全面解析了信号采样和Z变换的核心概念与应用。内容涵盖采样基础、采样频率与奈奎斯特率的关系、离散时间处理模拟信号的方法、采样率转换技术,以及Z变换的定义、性质、常见变换对和逆变换计算。通过实例分析和流程图展示,帮助读者深入理解数字信号处理的关键步骤,为相关领域的学习与应用打下坚实基础。

Jerry的专栏 120

安卓逆向 | 某社交类APP gsid

*本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除

爬虫进击之路 3083

java的封装继承和多态

this在每个类的内部,都有一个隐含的成员变量,该类的类型就是该类的类型,该成员变量的名称是this,this是一个引用,指向自身的对象。this的用法:         1、this调用本类中的属性,也就是类中的成员变量         2、this调用本类中的其他方法         3、this调用本类中的其他构造方法,调用时要放在构造方法的首行面向对象特征之封装(Encapsulation...

dragon901的博客 1万+

Chamfer Loss

ChamferLoss是一种常用于3D点云(pointcloud)处理的损失函数,特别是在点云生成和对齐任务中。它的目的是度量两个点集之间的相似度,特别是在点云重建、配准或生成等任务中,常用于优化模型使得生成的点云更接近真实的点云。

夜空中明亮的星的专栏 455

java封装继承多态

java封装继承多态 面向对象 面向对象的三个特征: 封装(Encapsulation); 继承(Inheritance); 多态(Polymorphism)。 我的总结: 面向过程:强调的是具体的功能实现;(执行者) 面向对象:强调的是具备功能的对象。(管理者) 2、类 类(class)是Java 语言的最小编程单位,也是设计和实现Java 程序的基础,本部分将深入介绍类的相关知识。 类的概...

阿龙Growing的博客 2796

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

封装 继承和多态

封装继承和多态 封装 我们在设计程序时,讲究六个字,高内聚,低耦合 封装就是我们对数据进行隐藏,多用于来封装属性,封装方法较少。 记住封装的核心,就是私有(private) 令属性为私有后我们调用不了类里面的属性,所以我们设置一些get方法和set方法来操作私有的属性 get方法,set方法 public int getAge(){ return age; } public void setAge(int age){ this.age = age; } 具体代码应用 设置一个学生类,令其定义的属

weixin_48121041的博客 5450

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java之封装,继承,多态

一,前言 ​ 今天总结一下关于Java的三大特性,封装,继承,多态。其实关于三大特性对于从事编程人员来说都是基本的了,毕竟只要接触Java这些都是先要认识的,接下来就系统总结一下。 二,封装 ​ 先来说说特性之一:封装 2.1,什么是封装 ​ 封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。 将类的某些信息隐藏在类的内部,不允许外部程序进行直接的访问调用。 通过该类提供的方法来实现对隐藏信息的操作

qq_42514371的博客 5411

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

封装、继承和多态

封装就是对类内部的实现细节进行隐藏,然后对类外提供公开的接口。继承其实是父类对子类的共性的抽取, 实现代码的复用。一个引用调用同一个方法,因为这个引用 引用的对象不一样,导致调用这个方法,所表现出来的行为不一样。这种思想就叫做多态。 ...

crazy_xieyi的博客 2473

Java 封装、继承、多态的理解

更好的阅读体验:Java封装、继承、多态的理解 1.封装 封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式。让使用者知道的才暴露出来,不需要让使用者知道的全部隐藏起来 封装的好处:避免使用者直接操作属性值,隐藏类的实现细节;让使用者只能通过程序员规定的方法来访问数据;可以方便的加入存取控制语句,限制不合理操作,提高程序安全性。 1.1.封装的实现 Java是使用“访问控制符”来控制哪些细节需要封装的,哪些细节需要暴露的。 Java中有4种访问控制符,分别为private,defaul.

持 开源思想,撰 必胜所学,望 勤学者,无难处 5955

java的三大特性:封装、继承和多态

多态是指同一行为(方法调用)在不同对象上具有不同表现形式。简单说:“父类引用指向子类对象,调用方法时执行子类的实现”。多态的核心是“动态绑定”(运行时确定调用哪个方法)。封装:通过private+getter/setter隐藏细节,保护数据。继承:通过extends复用父类逻辑,支持方法重写(@Override)和super访问。多态:通过向上转型+动态绑定,实现“同一行为不同表现”,提升代码灵活性和扩展性。

2402_85107566的博客 1110

Java必知必会三大特性,如何通俗理解Java的封装、继承和多态三大特性?

运用通俗易懂的语言和一些生活中常见的例子帮助更好地理解Java封装,继承,多态三大特性。

qq_52717914的博客 1455

JAVA的三大特性:封装、继承、多态

1- 封装: 封装是指把一个对象的状态信息(也就是属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息。但是可以提供一些可以被外界访问的方法来操作属性。 2- 继承: 拓展已存在的代码模块,目的是为了代码复用。 3- 多态 对象的编译时类型和运行时类型不一致,具体表现为父类的引用指向子类的实例。PS:JAVA引用变量有两个类型(编译时类型和运行时类型)。其中,编译时类型由声明该变量时使用的类型(父类)决定,运行时类型由实际赋给该变量的对象决定(...

weixin_42571453的博客 7098

Java三大特性——继承,封装和多态

总结Java三大特性:继承、封装和多态

Summer舒的博客 5484

java三大特性(封装、继承、多态)

1、final(最后)被abstract修饰的方法,强制要求子类重写,被final修饰的方法子类不能重写2、private(私有)被abstract修饰的方法,强制要求子类重写,被private修饰的方法子类不能重写3、static(静态)被static修饰的方法可以类名调用,类名调用抽象方法没有意义。

Aas1180的博客 1907

java封装 继承 多态_Java 封装、继承、多态

Java 封装、继承、多态1.封装:封装的理解:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,并通过该类提供的方法来实现对隐藏信息的操作和访问。(简单的说就是隐藏对象的信息,留出访问的接口)。特点:1.只能通过规定的方法访问数据;2.隐藏类的实例细节,方便修改和实现。实现封装的方式:使用访问控制符:java提供了三种访问权限,准确的说还有一种是默认的访问权限,加上它一共四种。private...

weixin_39850331的博客 2958

java三大特性——继承、封装和多态及代码示例

复习:java三大特性 继承、封装、多态 1、继承 继承 子类 父类 子类可以从父类继承属性和方法 子类可以提供自己单独的属性和方法 关键词 extends(扩展) 作用 类是对对象的抽象继承是对某一批类的抽象 从而实现对现实世界 更好的建模 提高代码的复用性 注意 子类继...

北城落花雨的博客 2240

Java之封装、继承,多态

详细的介绍了java中的三大特性,封装、继承、多态。

weixin_74200123的博客 1661
上一篇: 我的面试标准:1.能干活;2.Java基础好;3.熟悉分布式框架
下一篇: Java入门请不要放弃,学习路线以及侧重点分析
Java架构技术官
博客等级 码龄6年 9粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值