java基础

1.子类继承父类不是不仅仅是克隆(clone),复制一次就万事大吉了,以后父类里接口发生变化,子类也要随着变化的。父类能干的事,子类都能干,但是反之不成立。问题是,子类继承父类时,在内存上是如何改变的?

2.如果子类只继承父类,而不对父类里的接口的实现进行任何改变,那么子类其实和父类并无差别,应该没哪个二货吃饱了撑得没事这么干吧。那么我们有两种方式扩展父类(跟继承的关键字extends对上了):(1)在子类里添加新的函数接口,可能会由于父类不能满足我们处理问题了,需要添加新的接口帮助处理;(2)重写父类里函数接口,让它做我们想做的事情。

3.java的动态绑定,这个网址的作者写的非常好,http://www.cnblogs.com/ericdream/archive/2012/01/07/2315697.html。就是子类重写父类的方法,所有的子类的句柄都是父类,但是在调用编译器会根据具体情况决定调用哪个子类的方法,并且动态绑定的只能是方法,属性不能动态绑定。
例子:这里写图片描述
Shape是父类,Circle,Square,Triangle都是继承Shape的子类。

package test;

 class Shape{
    void name(){
        System.out.println("这是父类Shape: "+this.getClass());
    }
}

 class Circle extends Shape{
    void name (){
        System.out.println("这是子类Circle: "+this.getClass());
    }
}
class Triangle extends Shape{
    void name (){
        System.out.println("这是子类Triangle: "+this.getClass());
    }
}

class Square extends Shape{
    void name (){
        System.out.println("这是子类Square: "+this.getClass());
    }
}

public class Topople {

    public static void main(String args[]){

        Shape c = new Circle();
        Shape s = new Square();
        Shape t = new Triangle();
        c.name();
        s.name();
        t.name();

    }

}
//输出是
/*
这是子类Circle: class test.Circle
这是子类Square: class test.Square
这是子类Triangle: class test.Triangle
*/

还有父类的句柄指向的是真正的子类的地址空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值