美文网首页
Subtyping and the Substitution P

Subtyping and the Substitution P

作者: 怪物猎人 | 来源:发表于2017-04-11 01:48 被阅读0次

    Subtyping

    Subtyping is transitive, meaning that if one type is a subtype of a second, and the second is a subtype of a third, then the first is a subtype of the third.If one type is a subtype of another, we also say that the second is a supertype of the first.We also say, trivially, that every type is a subtype of itself.

    public class Subtyping {
        public static void main(String[] args) {
            Crow crow = new Crow();
            crow.shout();
            crow.fly();
            crow.sleep();
        }
    }
    
    
    class Animal {
        public void sleep() {
            System.out.println("I am sleeping");
        }
    }
    
    class Bird extends Animal{
        public void fly() {
            System.out.println("I am flying");
        }
    }
    
    class Crow extends Bird {
        public void shout() {
            System.out.println("I am crow");
        }
    }
    
    
    

    </br>

    Substitution Principle

    a variable of a given type may be assigned a value of any subtype of that type, and a method with a parameter of a given type may be invoked with an argument of any subtype of that type.

    interface Collection<E> {
        public boolean add(E elt);
        ...
    }
    
    
    List<Number> nums = new ArrayList<Number>();
    nums.add(2);
    nums.add(3.14);
    assert nums.toString().equals("[2, 3.14]");
    
    

    Here, subtyping is used in two ways for each method call. The first call is permitted because <strong>nums has type List<Number>, which is a subtype of Collection<Number>, and 2 has type Integer (thanks to boxing), which is a subtype of Number</strong>. The second call is similarly permitted. In both calls, the E in List<E> is taken to be Number.

    相关文章

      网友评论

          本文标题:Subtyping and the Substitution P

          本文链接:https://www.haomeiwen.com/subject/kjtyattx.html