【第22期】观点:IT 行业加班,到底有没有价值?

Override

原创 2016年08月29日 23:25:35

方法重写(Override)

又叫覆写,子类与父类的方法返回值类型一样、方法名称一样,参数一样,这样我们说子类与父类的方法构成重写关系。

方法重写与方法重载之间的关系:重载发生在同一个类内部的两个或多个方法。重写发生在父类与子类之间。

public class TestBook {
    //运行java程序时,会把class加载到内存中
    //java内存分为5个区域:方法区, 本地方法区, **堆**, **栈**, 寄存器
    //栈内存:先进后出,堆内存,使用的是哈希表
    //局部变量都存储在栈内存中,对象存储在堆内存中
    //当方法出栈时,局部变量会消失
    //堆内存中的对象不会消失,java有一个垃圾回收器,会不定时地回收垃圾
    /*
    new 关键字在生成对象时完成了三件事情:
    1. 为对象开辟内存空间。
    2. 调用类的构造方法。
    3. 将生成的对象的地址返回。
    */
    public static void main(String[] args) {
        Book b = new Book(3);
        b.name = "java";
        Book b2 = new Book();
        b2.name = "c";
        b = b2;
        System.out.println("你好" + b.name);
        //System.gc(); //强行调用垃圾回收器gc = garbage collection
        int a = 3;//基本数据类型都存储在栈内存中,引用数据类型存储在堆内存中
        b.look();
    }
}

public class Book {
    String name;

    public Book() {}
    public Book(String name) {
        this(1,2);
        this.name = name;
        System.out.println("没有参数的构造方法");
    }
    public Book(int a) {
        this("abc"); //this() 表示调用当前类,没有参数的构造方法
        //this()在构造方法中必须作为第一条语句,this()之前不能有任何可执行的代码。
        System.out.println("有一个参数的构造方法");
    }
    public Book(int a, int b) {
        System.out.println("有两个参数的构造方法");
    }
    public void look() {
        int a = 3;
        System.out.println(a);
        look(30);
    }
    public void look(int a) {
        System.out.println(a);
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

提高你的Java代码质量吧:注意@ Override不同版本的区别

一、分析  @Override注解用于方法的覆写上,它在编译期有效,也就是Java编译器在编译时会根据该注解检查是否真的是覆写,如果不是就报错,拒绝编译。  该注解很大程度解决我们的误写问...

Java @override报错的解决方法

       有时候Java的MyEclipse工程换一台电脑后编译总是@override报错,把@override去掉就好了,但不能从根本上解决问题,因为有时候有@override的地方超级多。 <p style="color: #333333; font-fa

C#中Abstract 、Virtual和Override的使用,类的继承

1. abstract 修饰符指示所修饰的内容缺少实现或未完全实现。 abstract 修饰符可用于类、方法、属性、索引器和事件。在类声明中使用abstract修饰符以指示某个类只能是其他类的基类。标...

Java @override报错的解决方法

有时候Java的Eclipse工程换一台电脑后编译总是@override报错,把@override去掉就好了,但不能从根本上解决问题,因为有时候有@override的地方超级多。 这是jdk的问题,@Override是JDK5就已经有了,但是不支持对接口的实现,认为这不是Override而报错。JDK6修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Override。 要解决该问题,首先要确保机器上安装了j

C# override和new的区别 (修饰函数时)

我们先看一下结论: override 1. override是派生类用来重写基类中方法的; 2. override不能重写非虚方法和静态方法; 3. override只能重写用virtual...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)