概念清单
类 对象 方法 实例变量
多态 继承 封装
抽象
重载 重写
面向对象知识
1. 修饰符
访问修饰符

- default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符。
- private : 在同一类内可见。
- public : 对所有类可见。
- protected : 对同一包内的类和所有子类可见。
非访问修饰符
- static 静态变量 静态方法
- final 类不能被继承,数据和函数不可被修改
- abstract
2. 继承
类
class 父类 {
}
 
class 子类 extends 父类 {
}
接口
public interface B {
    public void show();
}
 
public class C implements B {
}
- 构造函数
- this
- super
- 抽象类
3. 多态
- 重写 Override
 不可重写父类的private方法
 子类中调用父类的被重写方法时,要使用super关键字
- 
重载 Overload 
 
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("看家");  
    }  
}
4. 封装
没啥说的
