Java面向对象的三大特征:封装,继承,多态。
一.封装
- 封装概述:是面向对象三大特征之一(封装,继承,多态) 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的
- 封装原则:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 成员变量private,提供对应的getXxx()/setXxx()方法
- 封装好处:通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性
封装步骤:
1.用private修改属性的可见性来限制对属性的访问
2.提供方法get/set用来访问属性
3.在getter/setter方法中加入属性控制语句(用于判断属性值的合法性);
举例:
public class Test {
/*
将一个人的姓名,性别,年龄进行封装
*/
private String name;
private String sex;
private int age;
/*
提供有参和无参的构造方法
*/
public Test() {
}
public Test(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
/*
提供获取方法
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
封装的缺点:
将变量等使用private修饰,或者封装进方法内,使其不能直接被访问,增加了访问步骤与难度。
二.继承
1. 继承含义:多个类具有共同的属性(成员变量)与行为(成员方法)的时候,将这些共同的部分抽取出来定义到一个公共的类中,其他及各类可以与这个公共的类形成继承关系,从而在多个类中不需要重 复定义公共部分!这个公共的类就是父类,也称为超类或者基类,其他的类就是子类。子类可以直接访问父类的非私有化成员变量,访问父类的私有化成员变量可以使用super.get()方法。
2.继承特点:
- Java中类只支持单继承,不支持多继承
- Java中类支持多层继承
3.继承的优点与弊端:
优点:
1.减少代码量,能很好的提高复用率。
2.使类与类之间存在继承关系,是实现多态操作的前提。
弊端:继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时子类实现也不得不跟着变化,削弱了子类的独立性。
4.适用场景:
使用继承,需要考虑类与类之间是否存在is..a的关系,不能盲目使用继承。
is..a的关系:谁是谁的一种,例如:老师和学生是人的一种,那人就是父类,学生和老师就是子类。
三.多态
1.含义:多态指的是对象的多种形态。
多态有两种:引用多态和方法多态。
2.多态存在的前提:
1.必须有子类和父类,具有继承或实现(继承)
2.子类必须重写父类的方法(重写)
3.父类的引用变量指向子类的对象(向上转型)
3.多态的优点与弊端:
- 好处
提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作 - 弊端
不能使用子类的特有成员
4.成员特点:
成员访问特点
- 成员变量
编译看父类,运行看父类 - 成员方法
编译看父类,运行看子类