封装
一、
在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制(如get和set方法)。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装还可以去暴露我们想暴露出去的数据。如楼下年龄返回的年龄是我们想暴露出去的年龄,即当前年龄减五,
public class Student { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age-5; } public void setAge(int age) { this.age = age; } }
二、封装的访问修饰符
- 类的访问修饰符(√表示可以使用,×表示不可以使用)
修饰符\作用域 | 同一包中 | 非同一包中 |
---|---|---|
public | √ | √ |
默认修饰符(default) | √ | × |
-
类成员的访问修饰符(√表示可以使用,×表示不可以使用)
修饰符\作用域 | 同一类中 | 同一包中 | 子类中 | 其它 |
---|---|---|---|---|
private | √ | × | × | × |
默认修饰符(default) | √ | √ | × | × |
protected | √ | √ | √ | × |
public | √ | √ | √ | √ |
继承
一、什么是继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。当然,如果在父类中拥有私有属性(private修饰),则子类是不能被继承的。
二、继承的特点
2.1 关于继承的注意事项:
只支持单继承,即一个子类只允许有一个父类,但是可以实现多级继承,及子类拥有唯一的父类,而父类还可以再继承。
子类可以拥有父类的属性和方法。
子类可以拥有自己的属性和方法。
子类可以重写覆盖父类的方法。
2.2 继承的特点:
提高代码复用性。
三、多态
多态的体现形式
继承
- 父类引用指向子类(注!!!:引用存在在栈空间,对象存在堆空间)
- 重写
1、父类引用指向子类对象叫多态
2、父类.方法()执行的是子类的实现
3、只能调用父类中声明的方法。
public class son extends father {
public void swim(){
System.out.println("游泳");
}
public static void main(String[] args) {
// 1、父类引用指向子类对象叫多态
// 2、父类.方法()执行的是子类的实现
// 3、只能调用父类中声明的方法。(所以newson.swim()这是错误的,无法调用自己的方法!)
father newson = new son();
newson.run();
newson.swim();
}
public void run() {
System.out.println("跑");
}
}