封装
概念
在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
优点
良好的封装能够减少耦合。
类内部的结构可以自由修改。
可以对成员变量进行更精确的控制。
隐藏信息,实现细节。
举例
public class Main {
public static void main(String[] args) throws IOException {
Person xm = new Person("xm", 20);
System.out.println(xm.getName() + " 的年龄是 " + xm.getAge());
System.out.println("请输入新的年龄");
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(input);
int newAge = Integer.parseInt(br.readLine(), 10);
xm.setAge(newAge);
System.out.println(xm.getName() + " 新的年龄是 " + xm.getAge());
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
运行结果:
继承
概念
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
特性
子类拥有父类非 private 的属性、方法。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法。
Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。
举例
public class Main {
public static void main(String[] args) {
Child xm = new Child("xm", "xxxxx");
xm.printName();
}
}
class Parent {
private String parentName;
public Parent(String name) {
this.parentName = name;
}
public String getParentName() {
return this.parentName;
}
}
class Child extends Parent {
private String childName;
public Child(String name, String parentName) {
super(parentName);
this.childName = name;
}
public String getChildName() {
return this.childName;
}
public void printName() {
System.out.println("My name is " + this.childName + ", my parent name is " + this.getParentName());
}
}
运行结果: