Java SE常问问题(三大特性)
1|0Java SE常问问题(三大特性)
1|11.1 封装、继承、多态
1.1.1 封装
封装:什么是封装,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
通俗一点来说就是把类中的某些信息进行隐藏,从而使外部程序不能直接对这些信息进行直接的访问,只能通过类中定义的方法对这些隐藏的信息进行操作和访问。
目的:使其他类只能通过操控类中的对象来直接达到目的,不能看到具体的实现和属性,从而提高了程序的安全性和便利性。隐藏信息,实现便利。
封装的优点
-
良好的封装能够减少耦合。
-
类内部的结构可以自由修改。
-
可以对成员变量进行更精确的控制。
-
隐藏信息,实现细节。
实现步骤
-
通过访问控制符(private、default、protected、public)修改类中属性的可见性,从而限制对类中属性的访问
-
对每个值属性提供对外访问的公共方法,即创建一对赋值取值的方法来提供外部程序对类中的私有属性进行访问
1.1.2 继承
1.什么是继承?
(1)现实生活中的继承
现实生活中继承指的是对象与对象的继承关系。
(2)程序中的继承
继承是面向对象编程(OOP)的三大特征之一。
继承的概念: 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
程序中的继承是指类与类之间的继承关系。 Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类称为父类(或叫基类、超类)。
2.为什么需要继承?
(1)提高代码的重用性。
(2)优化代码,方便修改。
(3)类与类之间产生了关系,是多态的前提。
3.如何使用继承操作?
(1)继承的格式 通过 extends 关键字,可以声明一个子类继承另外一个父类
定义格式如下:
class 父类 { … }
class 子类 extends 父类 { … }
4.父类中哪些是子类所不能继承的?
(1)私有化的,即用private修饰的成员变量和成员方法。
(2)构造方法。
(3)子类与父类不在同一个包中,父类使用默认访问权限的成员变量和成员方法。
5.继承的其他特点 :
(1)单继承 Java中只支持单继承,不支持多继承。 Java虽然不直接支持多继承,但是保留了这种多继承机制,进行改良。
为什么不支持多继承呢? 因为当一个类同时继承两个父类时,两个父类中有相同的方法,那么子类对象调用该方法时,运行哪一个呢?
(2)多重继承(继承体系) Java支持多重继承,例如: class A{} class B extends A{} class C extends B{} 多重继承的出现,就有了继承体系。
(3)继承关系下,子类与父类的成员变量同名会有什么影响? 同名看实例化对象是哪个类就以哪个类中的成员变量值为准。 举例:如果new的是子类,则以子类中的值为准; 如果new的是父类,则以父类中的值为准。
(4)继承关系下,子类与父类的成员方法会有什么影响? 调用成员方法,先在子类中查找是否有该方法,有就执行,没有就去父类中查找执行。 父类中没有则直接报错。
6.子类如何访问父类的属性和方法?(使用super关键字)
(1)super.属性名
(2)super.方法名()
super的三种结构
(1)super.属性名 访问父类的属性: super.name;
(2)super.方法名() 访问父类的方法: super.print();
(3)super(); 调用父类构造方法:super(name,age); 注意:该句只能出现在子类构造方法中的第一行。
super()的应用及注意事项
(1)super()出现在子类构造方法,表示调用父类的构造方法。
(2)如调用父类带参构造方法,则用:super(参数列表);
(3)super()只能出现在子类构造方法中的第一行。
重写
注意:重写的前提是类之间具有继承关系。
什么是重写? 重写也称覆盖,是在继承关系下,子类对父类方法代码的修改。 举例:动物类(Animal)中的吃方法(eat),有些动物吃草,有些动物吃肉,都是吃的功能,但是动物不一样,实现的方式也不一样。
为什么要重写?
(1)父类已具有某个功能的方法,子类假如有相同功能的方法,使用重写的方式更加便利,不会造成子类既继承得到了父类的这个功能,又自己拥有一个同样的功能而方法名却不一样的尴尬境地。
(2)继承是多态的前提,重写方法也是为了多态的扩展性的。 什么情况下才能重写? 当子类跟父类拥有相同的功能,但是实现方式不同时,子类重写父类的方法即可。
如何重写?
方法的重写要遵循“两同两小一大”的原则:
两同:方法名和参数列表必须相同
两小:返回值类型、声明异常 比(被重写的)父类的小(或一样)
一大:访问修饰符比(被重写的)父类的大(或一样)
继承状态下父类、子类构造方法、static代码块、代码块的执行顺序 执行顺序如下:
(1)父类的静态代码块
(2)子类的静态代码块
(3)父类的代码块
(4)父类的构造方法
(5)子类的代码块
(6)子类的构造方法
原文链接:https://blog.csdn.net/tangneng430221/article/details/106081439
1.1.3 多态
1.多态的概念:指一个引用(类型)*在*不同情况下的多种状态。也可以理解为 通过指向父类的指针,来调用在不同子类中实现的方法
多态是继封装、继承之后,面向对象的第三大特性。
多态现实意义理解:
现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。
Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。
多态体现为父类引用变量可以指向子类对象。
前提条件:必须有子父类关系(即继承)
注意:在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。
定义格式:父类类型 变量名=new 子类类型();
2.多态中成员的特点
多态成员变量:
编译看左边
FU f = new Zi();
System.out.println(f.num);//f是Fu中的值,只能取到父中的值
多态成员方法:编译看左边,运行看右边
Fu f1=new Zi();
System.out.println(f1.show());//f1的门面类型是Fu,但实际类型是Zi,所以调用的是重写后的方法。
3.instanceof关键字 作用:用来判断某个对象是否属于某种数据类型。
4.多态的转型 多态的转型分为向上转型和向下转型两种 向上转型:多态本身就是向上转型过的过程 使用格式:父类类型 变量名=new 子类类型();
向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用类型转为子类引用各类型 使用格式:子类类型 变量名=(子类类型) 父类类型的变量;
原文链接:https://blog.csdn.net/qq_41679818/article/details/90523285
__EOF__

本文链接:https://www.cnblogs.com/CaiDingChao/p/16499405.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南