java基础学习笔记2

java基础学习笔记2

1.super关键字

就是可以在子类的方法中使用父类的方法。

但是要注意调用父类的方法不会影响子类的成员。

代码:

class FatherClass {
    public int value;
    public void f(){
        value = 100;
        System.out.println
        ("FatherClass.value="+value);
    }
}

class ChildClass extends FatherClass {
    public int value;
    public void f() {
        super.f();//重点在这里!!!!!!!!!!!
        value = 200;
        System.out.println
             ("ChildClass.value="+value);
        System.out.println(value);
        System.out.println(super.value);
    }
}

public class TestInherit {
	public static void main(String[] args) {
		ChildClass cc = new ChildClass();
		cc.f();
	}
}

内存分析:

image-20200927131414367

2.构造函数与继承–super

注意:

子类继承父类,想new个子类出来,需要调用子类构造函数,但又要调用父类构造函数,所以用super关键词调用父类构造函数。

如果不写super,默认调用父类参数为空的构造函数,如果父类没有空的构造函数,就报错。

例子:

package com.ufo.four;

class SuperClass {
    private int n;
    SuperClass() {
        System.out.println("空父类");
    }

    SuperClass(int n) {
        System.out.println("传参父类");
        this.n = n;
    }
}

class SubClass extends SuperClass {
    private int n;

    SubClass(int n) {
        System.out.println("传参子类");
    }

    SubClass() {
        super(300);
        System.out.println("空子类");
    }
}

public class TestSuperSub {
    public static void main(String arg[]) {
        SubClass sc1 = new SubClass();
        SubClass sc2 = new SubClass(400);
    }
}


3.object

可以去官网才下载doc文档,java.sun.com,下载后解压,双击index.html,打开网页,搜索关键词即可。

object是每个类都会继承的最基本的类。他不会extends object显示出来。

toString

里面有个toString方法,可以打印对象信息。如果不重写这个方法,默认返回classnname@hash编码,所以推荐重写这个方法。

image-20200927171708907

image-20200927171816680

equals

object有个equals方法,比较两个对象是否相等。

但是默认实现跟==没什么区别,所以不能直接使用obj.equals(anotherobj).

Person a=new Person(12,"zhnagsan");
Person b=new Person(12,"zhnagsan");
System.out.println(a.equals(b));//打印false

//如何让他变为true?在Person类里面重写equals方法:

    @Override
    public boolean equals(Object obj){
        if (obj==null) {return false;}
        else if(obj instanceof Teacher){
            Teacher a=(Teacher) obj;
            if(a.getZhiwei().equals(this.zhiwei)&&a.getName().equals(this.name)&&a.getAge()==this.age){
                return true;
            }
        }
        return false;
    }

String Date等类,已经重写好了equals方法,所以

String a=new String("123");
String b=new String("123");
System.out.println(a.equals(b));//打印true

instanceof 是一个操作符

举例:if (obj instanceof Person)

判断obj这个对象是否是Person类的。

4.hashcode

一个对象独一无二的值

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值