java学习总结(16.06.10~16.06.17)面向对象的三大特征——封装、继承、多态

面向对象三大特征:继承、封装、多态 (泛型) 封装:封装是一个概念,它的含义是把方法、属性、事件集中到一个统一的类中,并对使用者屏蔽其中的细节问题。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。 比如我们将一个房子看做是一个对象,里面的漂亮的装饰,如沙发、电视剧、空调、茶桌等等都是该房子的私有属性,但是如果我们没有那些墙遮挡,是不是别人就会一览无余呢?没有一点儿隐私!就是存在那个遮挡的墙,我们 阅读详情

面向对象的程序设计语言有三大特征,分别是封装、继承、多态

特征一:封装

封装,简单来说就是将数据和方法包装在类这种特殊的数据类型中。具备封装性(Encapsulation)的面向对象程序设计隐藏了某一方法的具体运行步骤,取而代之的是通过消息传递机制发送消息给它。封装是通过限制只有特定类的对象可以访问这一特定类的成员,而它们通常利用接口实现消息的传入传出。(摘自Wikipedia)


封装的关键在于如何将类的特定成员隐藏,例如

public class Point {
	//点的坐标
	private float x,y;
	//点的名字
	private char name;
	//三个数据成员的get和set方法
	public float getX() {
		return x;
	}
	public void setX(float x) {
		this.x = x;
	}
	public float getY() {
		return y;
	}
	public void setY(float y) {
		this.y = y;
	}
	public char getName() {
		return name;
	}
	public void setName(char name) {
		this.name = name;
	}
	
	public static void main(String[] args) {
		Point point=new Point();
		point.setX(10);
		point.setY(15);
		point.setName('A');
		System.out.println(point.getName()+"点坐标为("+point.getX()+","+point.getY()+")");
	}
}

运行结果如下:
A点坐标为(10.0,15.0)

上面的点类中,点的坐标,点的名字都设置成了private被隐藏起来,这个数据成员只能在类内访问,类外无法访问,只能通过get和set的方法进行读写。

封装的好处:
①良好的封装可以降低程序的耦合度
②可以隐藏类的成员,保护其不被外部修改
③封装后,程序的修改更为方便(只需修改类对应的方法成员即可)

ps:在eclipse中选中数据成员,右击-source-generate getters and setters可以快速生成数据成员的get和set方法。

特征二:继承

继承也是面向对象程序设计语言的一大特性继承使得程序的代码拥有了复用性。通过继承子类可以拥有父类的所有数据成员和方法成员,如此就不用再写有关这些成员的代码了。

如何声明一个子类:

法1,在eclipse中新建一个类文件时可以在superclass一栏指定相应的父类(每一个类都默认是Object类的子类),点击browse

在choose a type一栏打上父类名即可。


法2,在类声明时直接使用关键字extends指定父类,如:class SubClass extends BaseClass{}    这里将SubClass声明为BaseClass的一个子类

子类继承父类后,可以增加新的数据成员或方法成员,也可以对父类原有的方法进行重写(override)

方法重载和方法重写

方法重载:当两个方法方法名相同,参数列表不同时(即参数类型或参数个数或参数类型的顺序不同时),这两个方法即为重载,虽然方法名一样,但这的确是两个不同的方法。系统在编译时如果遇到重载方法,就会根据调用方法时的实参来匹配一个参数列表最符合的方法。例:
public class BaseClass {
      public void fun(int a){
      System.out.println(a);
      }
}
public class SubClass extends Base {
      public void fun(int a,int b){
            System.out.println(a+","+b);
      }
      public static void main(String[] args) {
            Child child=new Child();
            child.fun(10);
            child.fun(10,20);
      }
|
运行结果如下:
10
10,20
这里SubClass的fun方法重载了父类BaseClass的fun方法,因为父类的fun方法是公有的,子类SubClass的对象也可以调用此方法,编译时系统就会根据实参列表自行匹配出并使用最适合的方法。

方法重写:
对父类方法进行重写的要求(语法规则上):
①重写后的方法的方法名,参数列表,返回值必须与父类方法一致
②子类重写后的方法的访问权限不可以比父类方法的访问权限小,否则会抛出“Cannot reduce the visibility of the inherited method from XXX”的错误

注:

①子类的对象或方法体中会优先调用重写后的子类方法
②在eclipse中若要重写父类的某一个方法,只需在子类中输入要重写的方法名代码提醒出就会有完整的方法声明,敲一下回车即可将整个重写方法的声明写好。

③父类中的静态方法不可重写


在子类中访问和调用父类的数据成员和方法成员(super关键字)


①对于没有重名的数据成员和没有重写的方法成员,只需根据成员的访问权限可直接访问或通过父类提供的方法(接口)访问
②对于重名的数据成员和被重写过的方法成员,则可以使用super关键字,super关键字与this关键字类似,它指向当前类的父类的对象。在父类中通过[super.成员名]可以访问到父类的成员。注:在静态方法中无法使用super关键字。

③若想在子类中访问父类的静态成员,只需 [父类名.静态成员]即可


特征三:多态

多态分为编译时的多态和运行时的多态
编译时的多态:编译时通过参数列表不同来区分重载方法,而在编译完成后,具体调用哪一个方法已经被确定下来了
运行时的多态:运行时,通过根据所引用的对象的实际类型来判断调用哪一个类的方法成员
通常多态指的是后者

多态是一种现象:当编译时的类型和运行时的类型不一致时就会出现
多态产生的条件:使用父类的引用指向子类,并调用子类中重写后的方法。如:
public class Base {
	public  void fun(){
		System.out.println("调用了父类的fun方法");
	}
}
public class SubClass extends Base {
	@Override
	public void fun() {
		// TODO Auto-generated method stub
		//super.fun();
		System.out.println("子类的fun方法");
	}
	public static void main(String[] args) {
		Base p=new SubClass();//用父类的引用创建一个子类的对象
		p.fun();
	}
}
运行结果如下:
子类的fun方法
父类的引用对子类具有兼容性,因此可以使用父类的引用创建一个子类对象,如此,程序运行时,系统检测到引用和对象类型不一致,若调用某个有重写过的方法时,系统就会调用子类重写后的方法。

注:使用父类引用指向子类对象时,不能通过父类引用访问或调用子类中父类所没有的成员。因为编译时,系统会把父类引用指向的对象当成父类对象,因此访问或调用父类对象没有的成员会报错。当然,如果把父类引用强制类型转换成子类类型就不会出现这样的错误。

多态的好处:通过多态,可以时不同类型的对象对同一个消息作出不同的响应。例如发出“将要地震了”的信号,不同动物有不同反应,就会出现“鸡飞鼠遁狗跳墙”的场景。之后有空的话,我会用代码来模拟一下这个场景,具体代码以后有空再填坑,这里先挖一个坑。


16.java面向对象:面向对象的三大特征总结 即同一方法可以根据发送对象的不同而采用多种不同的行为方式,一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。封装(数据的隐藏)通常应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。感觉方法的调用跟等号右边没什么关系,因为右边都是new A(),但是却跟左边数据的定义有很大的关系。继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。当父类的属性或者方法是私有时super也是无法调用的。super调用父类的构造方法,必须在构造方法的第一行; 阅读详情

相关推荐

Java—面向对象的三大基本特征(封装、继承、多态)、抽象类、接口、fianl关键字、权限、内部类

文章目录

weixin_42426779的博客 1827

Java SE(继承和多态)

在Java中表示类之间的继承关系,需要借助extends关键字修饰符 class 子类 extends 父类 {注意:1. 子类会将父类中的成员变量或者成员方法继承到子类中了2. 子类继承父类之后,必须要新添加自己特有的成员,体现出与基类的不同,否则就没有必要继承了在子类方法中 或者 通过子类对象访问成员时:遵循就近原则。

Mlhlzds_的博客 274

FID指标实战:如何用Python快速计算生成图像的质量分数(附完整代码)

本文详细介绍了如何使用Python计算Fréchet Inception Distance(FID)指标,以评估生成图像的质量。通过完整的代码示例和优化技巧,帮助开发者快速实现FID计算,并解读分数背后的实际意义,适用于GAN和扩散模型的性能评估。

weixin_28718487的博客 377

面向对象程序设计的三大特征

今天总结一下面向对象(OOP)的三大特征,方便自己的复习学习,也方便大家的参考。 (1)面向对象程序设计有三大特征:封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)。这三个单词很常见,大家还是记住为好! (2)封装(Encapsulation):类包含了数据和方法,将数据和方法放在一个类中就构成了封装。 (3)继承(Inheritance)

“点点”专栏 8726

《数据分析岗笔试高频题:字节常用的SQL与AB测试考题解析》

• 核心考点:用RANK()/DENSE_RANK()/ROW_NUMBER()排序,SUM() OVER()计算累积值。◦ 用公式n=2*(Zα/2+Zβ)^2*σ²/δ²,取α=0.05,β=0.2,计算得每组需260人;◦ 关注字节技术公众号“字节跳动数据团队”,学习真实AB测试案例(如“推荐算法优化实验”)。• 题型分布:SQL编程题(40%)、AB测试方案设计(30%)、数据洞察题(30%);◦ 牛客网“字节跳动SQL真题”(如“统计用户7日留存”“广告投放ROI计算”)。

2501_91651594的博客 1110

星空组网 vs 蒲公英 vs Tailscale:2024年国内免费异地组网工具横评(含实测数据)

本文对2024年国内主流免费异地组网工具星空组网、蒲公英和Tailscale进行了深度横向评测。基于实测数据,重点分析了三者在P2P成功率、中继延迟、传输速度及稳定性方面的表现,为中小企业、远程办公及个人开发者提供了清晰的选择指南。星空组网在国内网络环境下展现出优秀的平衡性。

weixin_29217235的博客 1447

面向对象程序设计语言的三个基本特征:封装、继承、多态

封装:指的是将对象实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能; 继承:继承是面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法; 多态:多态指的是子类对象可以直接赋给父类变量,但运行时依然表现子类的行为特征,这意味着同一个类型的对象在执行同一个方法时,可能表现出多种行为特征。 ...

qq_36473318的博客 4059

基于SpringBoot+Vue的公司考勤管理系统

为什么选择我博主是优快云毕设辅导博客第一人兼开派祖师爷、博主本身从事开发软件开发、有丰富的编程能力和水平。专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流和合作。

m0_71849512的博客 1163

Java的三大特性——封装、继承、多态

最后是Java语言的多态特性, 方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。使用对象:类、接口、变量、方法。

m0_53926113的博客 1292

嵌入式统一消息机制:模块解耦与零拷贝通信设计

在嵌入式系统开发中,模块间通信(IMC)是影响可维护性与实时性的关键环节。传统IPC方式如全局变量、信号量或Socket易导致高耦合、调试困难及跨平台适配成本高。统一消息机制通过逻辑地址抽象、标签/实体分离、路由表驱动等原理,实现控制流与数据流解耦,在裸机、RTOS及Linux用户态保持一致接口。其技术价值在于降低模块依赖复杂度、支持动态增删与分布式迁移,并通过零拷贝优化显著减少CPU与内存开销。典型应用场景涵盖工业网关、城域交换机、多核ARM边缘设备等资源受限环境,尤其适用于需长期稳定运行、快速迭代与混合

weixin_35257663的博客 297

基于STM32LXXX的模数转换芯片ADC(TLA2528IRTER)驱动C程序设计

define TLA2528_ADDR 0x12 << 1 // 用于HAL传输的8位地址(写入为0x24,读取为0x25)// 100kHz (示例值,需根据实际时钟计算)#define TLA2528_REG_PIN_CFG 0x00 // 引脚配置寄存器。#define TLA2528_REG_CHN_SEL 0x01 // 通道选择寄存器。

myron6688的博客 230

Java面向对象的三大特性总结(封装性、继承性、多态性)

Java面向对象的三大特性总结(封装性、继承性、多态性)封装:继承:多态: 面向对象的三大特性 (封装性、继承性、多态性) 1、面向对象: 面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算 机事件的设计思想。它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去 操作实现。 举例: 洗衣服: 面向过程:把衣服脱下...

不甘平凡的码农 1251

Ardupilot EKF3核心算法《开篇》

Ardupilot EKF3核心算法本专栏重点,透彻,详细的分析了ardupilot的EKF3,保证是你看到的最完美的EKF3资料,相信你的选择不会错误。网上EKF资料真是太多,说真的没有一篇讲解好的。!!

陌城烟雨 1415

java面向对象详解

01、面向对象的基本概念 02、类与对象之间关系 03、类中的成员 04、类的构造器 05、堆和栈 06、this关键字的作用 07、static关键字的作用 08、对象之间的组合使用 09、面向对象三大特征之——封装 10、面向对象三大特征之——继承 11、面向对象三大特征之——多态 12、方法的重载与重写 13、super关键字的作用 14、final关键字的作用 15、抽象类 16、接口 17、instanceof关键字的作用 18、内部类的作用 19、案例代码

weixin_37942054的博客 1万+

matlab计算图像信噪比SNR

【代码】matlab计算图像信噪比SNR。

baidu_34971492的博客 1399

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

面向对象三大特性:封装、继承、多态

文章目录三种继承权限修改访问权限作用域嵌套和名字遮蔽基类和派生类的构造函数基类和派生类的析构函数继承时的对象内存模型多继承时的对象内存模型菱形继承、虚继承菱形继承虚继承 三种继承权限 下表汇总了不同继承方式对不同属性的成员的影响结果 继承权限/基类成员 public成员 protected成员 private成员 public继承 public protected 不可见 protected继承 protected protected 不可见 private继承 priv

kk阿彬 1701

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java学习16-- 面向对象学习4&5. 面向对象三大特征&抽象类和接口

提高代码的安全性隐藏代码的实现细节统一接口增加系统的可维护性。

weixin_42892630的博客 911

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java面向对象三大特征

Java面向对象的三个基本特征是封装、继承和多态。封装可以将数据和方法包装在一个单独的单元中,从而实现数据的隐藏和方法的封装;继承允许我们通过定义一个新的类来扩展一个已有的类,从而实现代码的复用;多态允许我们在不知道具体类型的情况下,使用父类的引用来引用子类的对象,从而实现代码的灵活性和可扩展性。掌握这三个基本特征,可以让我们更好地理解和应用Java面向对象编程的思想和方法。

weixin_64689713的博客 805

【Java修行之路】--面向对象的三大基本特征:封装、继承、多态

文章目录Java面向对象的三大基本特征(封装、继承、多态)1.Java访问权限修饰符2.封装2.1封装问题引例2.2封装问题实例2.3私有属性的Setter和Getter方法2.4方法的封装使用2.5使用构造函数实现数据的封装2.6 封装问题的总结3.继承3.1生活中的继承3.2为什么需要继承?3.3如何实现继承3.3.1继承演示程序3.3.2 super *VS* thissuper注意点super *VS* this【错误示例】【例6-super调用父类的构造方法】【例7-super调用父类的属性和方

SuperOnly2222的博客 356

面向对象三大特征 封装, 继承, 多态

1.继承:java中一个子类只能继承(extends)一个父类(也叫超类),一个父类可以被多个子类继承,子类的实例中也包含着父类的实例,可以使用super关键字得到父类实例的引用,子类会继承父类所有public的字段和方法,子类不能访问父类private的字段和方法 2.java中一个子类只能继承一个父类,当继承出现多层是不好(一般最多三次),可以使用final关键字来限制继承,一旦被final修饰就不能被继承 3.在继承关系中,父类更为通用,子类更为具体.子类除了具有父类一般(public的)的行为和特征

dangkun321的博客 295

java 面向对象三大特型(封装 ,继承, 多态)

java 面向对象三大特征(封装 ,继承, 多态) ***一:封装 字面意思就是包装起来 。 该露的露,该藏的藏。 程序设计要求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部调用 封装也就是数据的隐藏,通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问。 只要记住:属性私有 。可通过get 获取这个数据 / set 给数据设置值(可以安全检查)。 作用: 1.提高程序的安全性,保障数据 2.隐藏代码的实现细节 3.统一接口 4.增

qq_42883809的博客 291

java基础之面向对象(封装,继承,多态)

万物皆对象,在面向对象思想里,封装,继承,多态我。我们真的理解吗?理解完,我们应该怎么用它?什么是面向对象?什么是封装,什么是继承?什么是多态?什么接口?什么是抽象?接口与抽象之间的关系? java面向对象的三大特征:封装,继承,多态 1、封装:java中的封装是指一个类把自己内部的实现细节进行隐藏,,只暴露对外的接口(getter和setter)方法,封装又分为属性的封装和方法的封装。封装又分为属性的封装和方法的封装,把属性定义为私有地,他们通过setter和getter方法来对属性的值进行设定和获取。.

plasticma的博客 410

Java面向对象三大特性:封装、继承与多态详解

面向对象编程(OOP)是现代软件开发的核心范式,其三大基本特性封装、继承和多态构成了代码组织的基石。封装通过访问控制实现数据隐藏,保护对象内部状态;继承建立类之间的层次关系,促进代码复用;多态则基于继承实现运行时动态绑定,提升系统扩展性。在Java开发中,合理运用这三大特性能够显著提升代码质量,特别是在构建复杂系统架构时,良好的封装是模块化的前提,继承体系支撑了框架扩展,而多态机制则是设计模式实现的关键。掌握这些特性对于理解Spring等主流框架的底层原理至关重要,也是应对高并发、分布式系统设计的基础能力。

weixin_30588675的博客 383

Java的封装、继承与多态

面向对象的编程语言具有三大特性,分别是封装、继承与多态度。三大特性是面向对象编程的核心,对于我们这些初学者来说,务必要加强对这三大特性的理解与领会。在这篇文章中,我将会逐一介绍以下这三大特性。 封装 封装的定义: 把事物抽象成一个类,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系。当内部的逻辑发生变化的时候,外部调用不用因此而修改,它们只调用开发的接口,而不用去关心内部的实现。 封装的好处: 1.实现了专业的分工,将处理逻辑封装成一个方法,做到见名知义; 2.良好的封装可以减少耦合; 3.隐藏信

weixin_46595356的博客 518

【Java面向对象三大特征——封装】

面向对象三大特征​——封装。

“路漫漫其修远兮,吾将上下求索。” 1027

Java面向对象和三大特征

面向对象 Java 是面向对象的高级编程语言,类和对象是 Java 程序的构成核心。围绕着 Java 类和 Java 对象,有三大基本特性:封装是 Java 类的编写规范、继承是类与类之间联系的一种形式、而多态为系统组件或模块之间解耦提供了解决方案。 1. 面向对象的特点 (1)面向对象是一种常见的思想,比较符合人们的思考习惯; (2)面向对象可以将复杂的业务逻辑简单化,增强代码复...

csdnasu的博客 214
上一篇: java学习总结(16.06.07)向方法传递个数不定的形参
下一篇: java练习——情景模拟,模拟学校里的某几个情景
Fgb3420
博客等级 码龄11年 24粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值