Java课程预习5

纵然是瞬间 提交于 2020-03-08 23:04:41

方法的重写规则

  1. 返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类
  2. 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected。
  3. 声明为 final 的方法不能被重写。
  4. 声明为 static 的方法不能被重写,但是能够被再次声明。

被重载的方法必须改变参数列表(参数个数或类型不一样),被重载的方法可以改变访问修饰符


多态存在的三个必要条件

  1. 继承
  2. 重写
  3. 父类引用指向子类对象

实例:

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("看家");  
    }  
}

抽象类不能实例化对象, 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类


接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

接口文件保存在 .java 结尾的文件中,文件名使用接口名。

接口中所有的方法必须是抽象方法。

接口与类的区别:

  1. 接口不能用于实例化对象。
  2. 接口没有构造方法。
  3. 接口中所有的方法必须是抽象方法。
  4. 接口不能包含成员变量,除了 static 和 final 变量。
  5. 接口不是被类继承了,而是要被类实现。
  6. 接口支持多继承。

接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量

类文件中可以包含任意数量的 import 声明。import 声明必须在包声明之后,类声明之前。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!