面向对象编程的特性

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/chu_jian86a/article/details/79459352

面向机器语言:机器语言、汇编语言,针对不同的机器编写诸如01011100这样的指令序列;

面向过程语言:C语言、FORTRAN语言,核心是编写解决某个问题的代码块,比如C语言中的函数;

面向对象语言:Java语言,基于对象的编程更加符合人的思维模式,使程序代码更易维护、易扩展、易复用。


面向对象编程三大特性:

1.封装性

将数据和对数据的操作封装在一起,通过抽象,即从具体的实例中抽取共同的性质形成一般的概念,比如:类的概念。

2.继承性

子类可以继承父类的属性和功能,既继承了父类所具有的数据和数据上的操作,同时又可以增添子类独有的数据和数据上的操作。比如:“人类”自然继承了“哺乳类”的属性和功能,同时又增添了人类独有的属性和功能。

3.多态性

有两种意义上的多态:

  • 操作名称的多态,即有多个操作具有相同的名字,但这些操作所接收的消息类型必须不同。向操作传递不同的消息,对象则根据相应的消息产生一定的行为;
  • 和继承有关的多态,是指同一个操作被不同类型对象调用时可能产生不同的行为。


使用多态进行程序设计的核心技术之一是使用上转型对象,即将Abstract类声明对象作为其子类的上转型对象,那么这个上转型对象就可以调用子类重写的方法。

利用多态设计程序的好处是,可以体现程序设计的“开闭”原则(Open-Closed Principle),“开闭”原则强调一个程序应当对扩展开放,对修改关闭,增强代码的可维护性。比如:当程序在增加一个子类时(由其他人员去编写子类),上转型对象所在的类不需要做任何修改就可以调用盖子类重写的方法。具体实现如下:

Animal.java

public abstract class Animal {
	public abstract void cry();
	public abstract String getAnimalName();
}

Simulator.java

public class Simulator {
	public void playSound(Animal animal) {
		System.out.print("现在播放"+animal.getAnimalName()+"类的声音:");
		animal.cry();
	}
}

Dog.java

public class Dog extends Animal{
	public void cry() {
		System.out.println("汪汪...汪汪");
	}
	public String getAnimalName() {
		return "狗";
	}
}

Cat.java

public class Cat extends Animal{
	public void cry() {
		System.out.println("喵喵...喵喵");
	}
	public String getAnimalName() {
		return "猫";
	}
}

Example.java

public class Example {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Simulator simulator = new Simulator();
		simulator.playSound(new Dog());
		simulator.playSound(new Cat());
	}

}

猜你喜欢

转载自blog.csdn.net/chu_jian86a/article/details/79459352