Java函数的多态性和封装性
Java是一种基于对象的编程语言,其主要的编程思想是面向对象编程。在Java中,多态性和封装性是面向对象编程的两个重要的特性。
Java函数的多态性
多态性是指同一个方法可以被不同的对象调用,产生不同的结果。在Java中,多态性可以通过两种方式实现:重载和重写。
1. 重载
重载是指在同一个类中定义多个方法,方法名相同,但是参数类型或参数个数不同。在调用重载方法时,编译器会自动根据不同的参数类型或参数个数来确定调用哪个方法。
例如,下面是一个重载的方法:
public void print(int a) {
System.out.println("int a:" + a);
}
public void print(String s) {
System.out.println("String s:" + s);
}
在调用这个方法时,可以这样:
print(10);
print("hello world");
分别会输出:
int a:10 String s:hello world
2. 重写
重写是指子类重新定义了父类中的方法,但是方法名、返回类型和参数类型都相同。在调用重写方法时,编译器会根据实际调用的对象类型来确定调用哪个方法。
例如,下面是一个重写的方法:
class Animal {
public void shout() {
System.out.println("Animal shout!");
}
}
class Dog extends Animal {
@Override
public void shout() {
System.out.println("Dog shout!");
}
}
class Cat extends Animal {
@Override
public void shout() {
System.out.println("Cat shout!");
}
}
在调用这个方法时,可以这样:
Animal animal1 = new Animal(); Animal animal2 = new Dog(); Animal animal3 = new Cat(); animal1.shout(); // 输出:Animal shout! animal2.shout(); // 输出:Dog shout! animal3.shout(); // 输出:Cat shout!
Java函数的封装性
封装性是指隐藏对象的实现细节,只暴露必要的接口给其他的对象进行交互。在Java中,封装性可以通过以下方式实现:
1. private修饰符
将一个属性或方法声明为private,意味着只有在类的内部才可以访问。其他的类无法访问。
例如,下面是一个用private修饰符实现的封装的方法:
public class Person {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
在这个例子中,只有通过调用公共的set方法才能设置name和age;只有通过调用公共的get方法才能获取name和age。
2. getter和setter方法
getter和setter方法是指提供对属性的读取和设置方法,以便其他的类可以通过这些方法访问属性。
例如,上面例子中的getName()和getAge()方法就是getter方法;setName(String name)和setAge(int age)方法就是setter方法。
总结:
多态性和封装性是Java面向对象编程的两个重要特性。多态性可以通过重载和重写实现,可以提高代码重用性和可扩展性;封装性可以通过private修饰符和getter和setter方法实现,可以保证代码安全性和可维护性。
