Java的特点
面向对象
重要程度:10 分
<div>
<h2>面向对象</h2>
<p><strong>面向对象(Object-Oriented, OO)</strong>是一种编程范式,它使用“对象”来设计软件。在Java中,几乎一切都是对象。面向对象编程的主要特点是:</p>
<ul>
<li><strong>封装(Encapsulation)</strong>:将数据(属性)和操作数据的方法绑定在一起,并隐藏对象的内部细节。</li>
<li><strong>继承(Inheritance)</strong>:子类可以继承父类的属性和方法,从而实现代码重用。</li>
<li><strong>多态(Polymorphism)</strong>:同一个接口或方法可以用在多种类型的对象上,并表现出不同的行为。</li>
</ul>
<h3>封装(Encapsulation)</h3>
<p>封装是将数据和方法组合成一个单独的单元,即类。通过封装,我们可以隐藏对象的内部状态和实现细节,仅提供公共访问方法。</p>
<pre>
public class Car {
private String model; // 封装的数据
public String getModel() { // 获取数据的方法
return this.model;
}
public void setModel(String model) { // 设置数据的方法
this.model = model;
}
}
</pre>
<p>在这个例子中,<code>model</code>属性被声明为私有的,只能通过<code>getModel()</code>和<code>setModel()</code>方法来访问和修改。</p>
<h3>继承(Inheritance)</h3>
<p>继承允许创建一个新的类(子类),这个类可以继承另一个已存在的类(父类)的属性和方法。</p>
<pre>
public class Vehicle {
protected int wheels;
public Vehicle(int wheels) {
this.wheels = wheels;
}
public void drive() {
System.out.println("Driving...");
}
}
public class Car extends Vehicle {
public Car(int wheels) {
super(wheels);
}
public void honk() {
System.out.println("Honking...");
}
}
</pre>
<p>在这个例子中,<code>Car</code>类继承了<code>Vehicle</code>类,因此<code>Car</code>类可以直接使用<code>Vehicle</code>类的<code>wheels</code>属性和<code>drive</code>方法。</p>
<h3>多态(Polymorphism)</h3>
<p>多态性允许我们使用父类引用指向子类对象,从而调用子类特有的方法。</p>
<pre>
public class Animal {
public void makeSound() {
System.out.println("Some generic animal sound");
}
}
public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Bark!");
}
}
public class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow!");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.makeSound(); // 输出 "Bark!"
myCat.makeSound(); // 输出 "Meow!"
}
}
</pre>
<p>在这个例子中,<code>Animal</code>类有一个<code>makeSound</code>方法,而<code>Dog</code>和<code>Cat</code>类分别覆盖了这个方法。在<code>Main</code>类中,我们使用<code>Animal</code>类型的引用变量来引用<code>Dog</code>和<code>Cat</code>对象,这样就可以根据对象的实际类型来调用相应的方法。</p>
</div>