1 封装(Encapsulation)
1.定义
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
2.特点
(1)数据隐藏:类的数据只能通过类提供的接口进行访问,对外部不可见。
(2)接口访问:类的接口是公开的,可以被其他类访问和调用。
(3)安全性:封装可以提高代码的安全性,防止外部的错误操作对类的数据产生影响。
(4)可维护性:封装可以隐藏内部的实现细节,使得类的实现可以更加灵活和易于维护。
public class Computer{
// 名字定义为私有属性,外部只能通过get和set方法访问
/**
* 名字
*/
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Computer(){
}
public String run(){
return getName() + "启动";
}
}
2 继承(Inheritance)
1.定义
子类拥有父类的所有属性和方法,从而实现了实现代码的复用。
2.特点
(1)代码重用:子类可以继承父类的属性和方法,避免了代码的重复编写。
(2)功能扩展:子类可以扩展父类的功能,使得代码更加灵活和可扩展。
(3)继承层次:多层继承可以形成继承层次结构,使得代码的组织和管理更加清晰。
/**
* HuaweiComputer拥有Computer的属性name和方法run()
*/
public class HuaweiComputer extends Computer{
/**
* 品牌
*/
private String brand;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
}
3 多态(Polymorphism)
1.定义
父类引用指向子类对象,从而产生多种形态。
2.特点
(1)方法重载:同一个方法名可以定义多个不同的参数列表,产生方法重载。
(2)方法重写:子类可以重写父类的方法,产生方法重写。
(3)向上转型:子类对象可以向上转型为父类对象,使得同一个方法可以被不同的对象调用。
(4)运行时绑定:方法调用的具体实现是在运行时动态绑定的,而不是在编译时静态绑定的。
// Computer拥有 IphoneComputer 和 HuaweiComputer两个子类,run()方法被重写
public class IphoneComputer extends Computer{
private String brand;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String run(){
return "iphone电脑" + getName() + "启动";
}
}
public class HuaweiComputer extends Computer{
/**
* 品牌
*/
private String brand;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String run(){
return "huawei电脑" + getName() + "启动";
}
}