java学习笔记7:多态、抽象类、接口

思维导图

java学习笔记7:多态、抽象类、接口_第1张图片
一、多态的实现

   public class MyTest3 {
    public static void main(String[] args) {
        Fu fu = new Zi();
        System.out.println(fu.num);//100
        fu.show();                 //zi show
        Zi zi= (Zi) fu;//向下转型
        System.out.println(zi.num);//10
        zi.mehtod();              //子类特有的方法
    }
} 
class Fu{
    int num=100;
    public void show(){
        System.out.println("fu  show");
    }  
}  
class Zi extends Fu{
    int num=10;   
    @Override
    public void show() {
        System.out.println("zi show");
    }
    public void mehtod(){
        System.out.println("子类特有的方法");
    }
}

多态内存图解
java学习笔记7:多态、抽象类、接口_第2张图片
二、抽象类

    案例演示
    假如我们在开发一个系统时需要对员工(Employee) 类进行设计,员工包含3个属性:姓名、工号以及工资(salary)。
    经理(Manager) 也是员工,除了含有员工的属性外,另为还有一个奖金(bonus) 属性。
    然后定义工作的方法.
    请使用继承的思想设计出员工类和经理类。
    public class Test {
       public static void main(String[] args) {
       Employee e = new Manager();
       e.name = "托尼";
       e.id = 111;
       e.salary = 88888;
      ((Manager) e).bonus = 29999;
       System.out.println(e.id + "==" + e.name + "==" + e.salary);
       e.work();
       System.out.println("-------------------");
       e = new Coder();
       e.name = "华安";
       e.id = 7527;
       e.salary = 12000;
       System.out.println(e.id + "==" + e.name + "==" + e.salary);
       e.work();
        }
     }
      abstract class Employee {
         String name;
         int id;
         double salary;
          public abstract void work();
      }
     class Manager extends Employee {
        double bonus;
        @Override
         public void work() {
          System.out.println("经理写一写需求文档");
    }
}
     class Coder extends Employee {
        @Override
        public void work() {
            System.out.println("写代码");
    }
}
输出: 111==托尼==88888.0
      经理写一写需求文档
      -------------------
      7527==华安==12000.0
      写代码

三、接口

public class MyTest {
    public static void main(String[] args) {
        //接口:跟类同级别,接口经常用来定义一些额外的扩展功能,或者定义一些规范。
        Cat cat = new Cat();
        Animal an=cat;
        an.eat();
        an.sleep();
        ((Cat) an).catchMouse();
        System.out.println("-----------------");
        MyIntereface myIntereface=cat;
        myIntereface.fire();
        myIntereface.math();
        System.out.println("------------------");
        Dog dog = new Dog();
        Animal an2=dog;
        an2.sleep();
        an2.eat();
        ((Dog) an2).lookDoor();
        MyIntereface myIntereface1=dog;
        myIntereface1.math();
        myIntereface1.math();
    }
}
abstract class Animal {
    public abstract void eat();
    public abstract void sleep();
}
//定义个别动物的特有方法
public interface MyIntereface {
    void fire();
    void math(); 
 }
class Cat extends Animal implements MyIntereface{
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
    @Override
    public void sleep() {
        System.out.println("猫白天睡觉");
    }
    public void catchMouse() {
        System.out.println("猫抓老鼠");
    }
    @Override
    public void fire() {
        System.out.println("猫经过不断的学习会钻火圈了");
    }
    @Override
    public void math() {
        System.out.println("猫经过练习,会做算术了");
    }
}
class Dog extends Animal implements MyIntereface{
     @Override
      public void eat() {
          System.out.println("狗吃骨头");
    }
     @Override
     public void sleep() {
        System.out.println("狗睡觉");
    }
     public void lookDoor(){
        System.out.println("狗看门");
    }
     @Override
     public void fire() {
        System.out.println("狗学会了钻火圈");
    }
     @Override
     public void math() {
        System.out.println("狗学会了做算术");
  }
}

你可能感兴趣的:(java学习笔记7:多态、抽象类、接口)