Section 7 - 8 polymorphsim

来源:互联网 发布:命中注定我爱你 知乎 编辑:程序博客网 时间:2024/05/18 10:34

Inheritance:

Members of a class: instance variables and methods.

Subclass extends the superclass. The subclass inherits from the superclass.

Instance variables are not overridden.

The lowest method in the inheritance tree wins.


IS-A relationship, extends, implements.

HAS-A relationship.


A subclass inherits all public instance variables and methods of the superclass, but not the private instance variables and methods.


Polymorphism:

1. Reference type can be a superclass of the actual object type.

Animal a = new Dog();

2. Polymorphic arrays.

Animal[] a;

3. Polymorphic arguments and return types.

public void takeAnimal(Animal animal);// can take a Dog as arguments.


Non-extensive class:

1. non-public class can be subclassed only by classes in the same package.

2. final class

3. private constructor. Cannot be instantiated.


Non-overridden method:

1. final class

2. final method


The overridden method can't be less accessible.


Overloading a method:

Methods with same name but different arguments lists. No polymorphism. Method signature: name and arugments.

1. Argument lists must be different.

2. Return types can be different but should not be the only difference.


Abstract class and Concrete class:

Abstract class cannot be instantiated.

Abstract methods must be overridden. The class also has to be abstract.

Abstract class can have abstract and non-abstract methods.  

Abstract class can implement inherited abstract methods.


Any class that doesn't explicitly extend another class, implicitly extends Object.


The compiler decides whether you can call a method based on the reference type, not the actual object type. The reference is a Remote Control which refers to the corresponding object.


Use instanceof to check the class type.

if(o instanceof Dog) {    Dog d = (Dog) o;}


Java does not allow multiple inheritance.


A java interface only has abstract methods. Interface methods are implicitly public and abstract, and not encouraged to type these words.

Extends one parent. Interface are the roles to play.

接口往往是对外展示的,方法默认为public和abstract。static方法只供interface定义内使用。default可以定义函数body,可以被复写。

 

0 0