封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装的优点
-
1. 良好的封装能够减少耦合。
-
2. 类内部的结构可以自由修改。
-
3. 可以对成员变量进行更精确的控制。
-
4. 隐藏信息,实现细节。
继承:Java中使用extends使一个类与拎一个类建立父子关系,
设计规范:只有子类们的相同特征放在父类中 子类独有的应该放在子类里
继承的特点:子类继承父类的属性与行为,单不继承构造器 * Java是单继承模式,一个类只能继承一个父类 * Java不支持多继承,单支持多层继承,当方法名重复时,使用就近原则 * Java中所用类都是object类的子类 * 子类可以继承父类的私有成员,但不能直接访问,要通过对应的方法 *子类可以继承父类的静态成员,不是继承,知识共享。 仅仅是可以使用(子类.父类中的静态成员)
class 父类 { }
class 子类 extends 父类 { }
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作
简单来说就是,同一个类的不同对象的不同行为
public class Test {
public static void main(String[] args) {
show(new Cat()); // 以 Cat 对象调用 show 方法
show(new Dog()); // 以 Dog 对象调用 show 方法
Animal a = new Cat(); // 向上转型
a.eat(); // 调用的是 Cat 的 eat
Cat c = (Cat)a; // 向下转型
c.work(); // 调用的是 Cat 的 work
}
public static void show(Animal a) {
a.eat();
// 类型判断
if (a instanceof Cat) { // 猫做的事情
Cat c = (Cat)a;
c.work();
} else if (a instanceof Dog) { // 狗做的事情
Dog c = (Dog)a;
c.work();
}
}
}
abstract class Animal {
abstract void eat();
}
class Cat extends Animal {
public void eat() {
System.out.println("吃鱼");
}
public void work() {
System.out.println("抓老鼠");
}
}
class Dog extends Animal {
public void eat() {
System.out.println("吃骨头");
}
public void work() {
System.out.println("看家");
}
}
吃鱼 抓老鼠 吃骨头 看家 吃鱼 抓老鼠