面向对象的三大特征
面向对象的三大特征:封装、继承、多态。
一、封装
封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。 (属性能够描述事物的特征,方法能够描述事物的动作。)
面向对象的封装有两层含义:
1、类,属性、方法这些定义在类
2、为了安全考虑,在开发的过程中,会将属性私有化(private关键字修饰),需要提供对应接口完成设置和访问(公开的setter和getter方法)的过程。
封装:是将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
例如:
电脑的机箱
一台电脑,它是由CPU、主板、显卡、内存、硬盘、电源等部件组成,将 这些部件组装在一起就可以使用电脑了,但是发现这些部件都散落在面,很容造成不安全因素,于是,使用机箱壳子,把这些部件都装在里面,并在机箱壳上留下一些插口等。
封装的好处:
- 提高了代码的复用性。
- 隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。这是核心之一,也可
以理解为就是封装的概念。 - 提高了安全性。
封装的实现
需要使用一个Java中的关键字也是一个修饰符 private(私有权限修饰符)。
以后再描述事物,属性都私有化,并提供setXxx getXxx方法对其进行访问。
例:
public class Test {
public static void main(String[] args) {
Person p = new Person();
p.setName("张三");//给name赋值
p.setAge(23);//给age赋值
System.out.println(p.getName());//获取name赋的值
System.out.println(p.getAge());//获取给age赋的值
}
}
class Person{
//私有化属性
private String name;
private int age;
//获取name属性
public String getName() {
return name;
}
//设置name属性
public void setName(String name) {
this.name = name;
}
//获取age属性
public int getAge() {
return age;
}
//设置age属性
public void setAge(int age) {
this.age = age;
}
}
单例模式
使用场景:某类创建对象只能且最多只有一个对象。
步骤:
- 私有化构造函数,杜绝外界创建对象。
- 内部创建该类对象(静态)。
- 提供公共接口向外提供该类的对象。
public class Test {
public static void main(String[] args) {
// 懒汉式单例模式
Singleton s1 = Singleton.newInstance();
Singleton s2 = Singleton.newInstance();
System.out.println(s1 == s2);
// 饿汉式单例模式
Singleton2 s3 = Singleton2.newInstance();
Singleton2 s4 =