美文网首页
java接口相关的

java接口相关的

作者: 萍水间人 | 来源:发表于2019-04-18 22:57 被阅读0次

突然发现好久没有更新了

写一点关于java接口的东东吧

关于接口

java中是禁止多继承的

所以要想实现多继承就得用接口

作业

我的解答(好丑)

package tttttt;

import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction;

interface CompareObject{
    public int compareTo(Object o);  // 返回值是0代表相等, 为正数当前对象大, 为负数代表当前对象小
}


class Circle{
    protected int radius;
    
    public void setRadius(int radius) {
        this.radius = radius;
    }
    public int getRadius() {
        return this.radius;
    }

}

class ComparableCircle extends Circle implements CompareObject{
    
    
    public int compareTo(Object o){
        if(o instanceof ComparableCircle)
        {
            if(super.getRadius() == ((Circle) o).getRadius())
                return 0;
            else if(super.getRadius() > ((Circle) o).getRadius())
                return 1;
            else if(super.getRadius() < ((Circle) o).getRadius())
                return -1;
        }
        else
        {
            System.out.println("不是同一种对象无法比较");
            return 1;
        }
        return 1;
        
    }

}

public class TestInterface{
    public static void main(String[] args) {
        ComparableCircle c1 = new ComparableCircle();
        ComparableCircle c2 = new ComparableCircle();

        int comp = c1.compareTo(c2);

        System.out.println("比较的结果为:" + comp);
        
    }
}

写代码的时候遇到了以下问题

  1. object 怎么向下转型

突然发现eclipse会在你写代码的时候就进行初步的编译
也就是说, 如果在if语句里面, o就是ComparableCircle类型的

  1. 向上转型

既然o都是ComparableCircle类型的, 为啥还是用不了它的方法??

编辑器提示我向上转型。。

好吧就向上。

  1. java中的返回值规定很死。

必须确保每一条路径都有返回值。。

java中向上转型与向下转型的好处?

package tttttt;



public class Human {
    public void sleep() {
        System.out.println("Human sleep..");
    }
       public static  void doSleep(Human h){
           h.sleep();
           
       }//此时传递的参数是父类对象,但是实际调用时传递子类对象,就是向上转型。
    public static void main(String[] args) {
        Human h = new Male();// 向上转型
//        doSleep(new Male());//此处匿名子类对象,当然实际应用时应该是用上面的向上转型公式,然后将子类对象传递进来,这样以后好在向下转型,此处没有向下转型,所以直接用了匿名类对象。
//        doSleep(new Female());
        doSleep(h);
    }
}

class Male extends Human {
    @Override
    public void sleep() {
        System.out.println("Male sleep..");
    }
}

class Female extends Human {
    @Override
    public void sleep() {
        System.out.println("Female sleep..");
    }

}

话不多说上代码

通过转型, 可以让我们少些很多代码(滑稽)

相关文章

网友评论

      本文标题:java接口相关的

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