everything is a object2

1、在java这样的面向对象语言中,代码的复用属于这类语言的特点,一般情况下可以把类作为成员对象,另外一种就是继承的概念。
2、在继承类中,可以添加新的成员变量也可以添加新的方法,在继承中最重要的引入新特性的方式确实方法的重载。
3、java中继承的概念充分体现了多态(polymorphism),个人认为所谓的多态不是像c一样在编译时对函数就进行绑定,因此需要确切的知道代码函数的绝对地址。java采用的是运行时绑定,这样同一段代码可以根据消息(message)的不同而执行不同的代码片段。

class Shape{
    public void erase(){}
    public void draw(){}
}

class Circle extends Shape{

    @Override
    public void erase() {
        // TODO Auto-generated method stub
        System.out.println("circle has been erased");
    }

    @Override
    public void draw() {
        // TODO Auto-generated method stub
        System.out.println("circle has been drew");
    }

}
public class Polymorphism {
    public static void doSomething(Shape shape){
        shape.erase();
        shape.draw();
    }
    public static void main(String[] args) {
        Circle circle = new Circle();
        Shape shape = new Circle();
        shape.erase();
        doSomething(shape);
    }

}

可以看出在doSomething静态方法中,利用父类Shape作为形参,当传入参数为不同的子类则执行子类中相关的代码。这个时候shape只是子类的一个引用。例如,图形中有圆形、放行、三角形等,我当然可以说圆形是图形。这就是继承的概念。
When you send a message to an object, the object will do the right thing, even when upcasting is involved.
3、在java中主要用到的存储类型分为以下几种:
▷registers(寄存器) 该存储设备在处理器的内部,具有很快的处理速度,但是程序并不直接控制寄存器。
▷stack(栈) 该存储类型位于RAM中,由处理器通过栈指针(stack pointer)进行该区域存储的控制。在java系统中,当栈中存放程序元素时,这些元素的生命周期也就确定并且被存储了。java中对象的引用就是存储在栈中的。
▷heap(堆) 该存储类型同样位于RAM中,因为编译器并不需要知道该类型中元素的生命周期,因此灵活性非常高。当需要的时候利用代码执行进行创建。
4、由于在java编程中,基本类型和引用的创建是在栈上面的,因此这部分变量的生命周期可以用{}来进行标志和划分。而通过new创建的对象是存储在堆中,对象是在运行时进行创建的,因此编译器并不知道它们的生命周期,这也就是java垃圾回收机制的充分条件。java回收器的基本工作就是检查所有通过new创建的对象,没有被引用链接的生命周期也就结束了(引用的生命周期在编译的时候就是确定的)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值