Java 面向对象的三大特征:封装,继承、多态

本文深入解析Java面向对象的三大核心特性:封装、继承和多态。封装确保对象属性和实现细节的隐藏,提高代码的安全性和可维护性;继承实现代码复用,建立类间关系;多态提升程序的扩展性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java 面向对象的三大特征:封装,继承、多态。

封装(Encapsulation)

封装就是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

例子:我们可以把电脑作为一个例子,电脑内部的那些部件对我们来说就是封装的。我们只看到了它的外面,当我们去用电脑时不需要去理解它里面的cpu,显卡,网卡,散热器怎么工作的。只取看和用它对外提供的显示器,鼠标等接口就行了。所以电脑内部对我们来说就是封装的隐藏了对象属性和实现细节。

封装的优点:

1.将变化隔离了。我们在根据自己的需求去改变封装部分的代码时,不用修改那些调用我们代码的程序片段。

2.提高重用性。当我们封装好一个功能块后不需要在去重新写这样的代码,而只去调用我们封装好的功能块就行了。

3.提高安全性。当我们去修改封装好的功能块的代码时,对外界其它代码的影响不大,便于维护修改。

4.便于使用。当封装好一个功能块后直接去调用就行,不一定要去理解内部实现。

 

继承(Extends)

继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

例子:有个Person(人)类,里面有名字,性别,年龄属性。当我们想创建一个Student(学生)类时就可以不用再去写它的名字,性别,年龄属性,直接继承Person类就行了。这样Student类也就有了 这些属性,因为学生也是人的一种。而且这些属性外我们还可以在学生类中添加别的学号,班级等别的属性。

继承的有点:

1.提高了代码的复用性。

2.让类与类之间产生了关系,有了这关系才有了多态的特性。

注意:

1.Java 中只支持单继承。因为多继承会有安全隐患,当多个父类定义了相同的功能,功能内容不同时,子类对象不确定要运行那                  个。就像多个父类定义了相同名字函数  add(); 而内容不同时,子类就不知道运行那个。

2.Java 会支持多继承,只有在接口与接口之间存在,因为接口中的成员函数没有方法体。

3.Java 支持多层继承,就是一个继承体系。如 :C 继承 B,B 继承 A,这个时候C包含了A,B的内容。

 

多态(Polymorphism)

某一类事物的多种存在形式。

例子: 猫 x = new 猫();

           哺乳动物 x = new 猫();

           动物 x = new 猫();

猫我们可以当作猫,同时猫也是猫类动物,或者哺乳动物,或者动物。这就时猫的多种表现形式。

 

多态的体现:

1.父类的引用指向了自己的子类对象。

2.父类的引用也可以接受自己的子类对象。

如下:

abstract class Animal {
	public abstract void shout(); // 定义抽象shout()方法
}
 
class Cat extends Animal {
	public void shout() {
		System.out.println("喵喵...");
	}
}
 
class Dog extends Animal {
	public void shout() {
		System.out.println("汪汪...");	
	}
}
 
public class Duotai {
	public static void main(String[] args) {
		Animal cat = new Cat();
		Animal dog = new Dog();
		
		animalShout(dog);
		animalShout(cat);
//		运行结果:
//				汪汪...
//				喵喵...
	
	}
	
	// 定义一个静态的animalShout()方法,接收一个Animal类型的对象
	public static void animalShout(Animal animal) {
		animal.shout();// 调用实际参数的shout()方法
	}
}

 

多态的前提:

1.必须是类与类之间有关系。要继承,要么实现。

2.而且要存在覆盖(复写) 。就像上面代码中复写了shout()。

 

多态的优点和弊端:

优点:

1.可扩展性。多态的出现大大的提高了程序的扩展性。

2.可替换性。多态对已存在的程序具有可替换。

3.接口性。多态是超类通过方法签名,向子类提供了一个共同接口。由子类来完善或覆盖它而实现的。

4.灵活性。它在应用中体现了灵活多样操作,提高了使用效率。

5.简化性。多态简化对应用软件的代码编写和修改过程,尤其在使用大量对象的运算操作时。

 

缺点:

1.提高了扩展性,但是只能使用父类的引用访问父类中的成员。也就是只能调用你在父类中定义过的东西。

 

注意:多态自始至终都是子类对象在做着变化。我们能转的是父类引用指向了自己的子类对象时可被提升,也可以被强制转换。

如:    Animal a = new Cat();  类型提升了,向上转型。 猫 ----> 动物

当我们想用子类的特有方法时,就强制将父类引用转换成子类类型,向下转型。如下:

Cat c = (Cat)a;

而我们不能将  Animal a = new Animal();  转换成 Cat c = (Cat)a;

 

 

本博客内容根据个人理解所写,有什么错误和误解请反映给博主。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值