Section 7 - 8 polymorphsim

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值