java基础学习08(重写方法、jdk自带的Object类、封装)

java基础学习08(重写方法、jdk自带的Object类、封装)

第一章 接上次讲继承中的方法重写

在子类继承父类后,在调用子类的功能后后发现子类的功能不满足我们的需求时,我们就要在子类中重新编写相同的方法,达到覆盖父类中该方法的效果,这样再次调用就能满足我们的需求了。其实就是对于子类的一些行为的扩展。

出现方法重写的前提:一定发生继承关系!!

1.1 怎样达到子类方法覆盖父类方法?

  • 子类中方法名和父类中方法名一模一样;
  • 子类中方法的参数列表和父类方法中的参数列表一模一样;
  • 子类中方法返回值类型也好和父类方法返回值也要一模一样。

实例代码:

public class Father {
   
	String name;
	int age;
	int height;
	public Father(){
   
	}
	public int getAge(){
   
		this.age = 45;
		return this.age;
	}
}
public class Son extends Father{
   
	int id;
	public Son(){
   
	}
    @Override
	public int getAge(){
   
		this.age = 20;
		return this.age;
	}
}
public class Text {
   
	public static void main(String[] args) {
   
		Son t = new Son();
		System.out.println(t.getAge());
        //输出结果是20
	}
}

代码分析:在上述代码中,Son类继承了Father类,所以Son类是子类,Father是父类,我们发现子类和父类中都存在getAge方法,且两个类中该方法参数列表都是空,返回值也是一样的,所以在子类中我们重写了getAge方法,这样的就不会调用父类的getAge方法了,所以输出结果是20。

@Override:我们在子类重写的那个方法上面一行(上述代码所示)写上@Override,如果会报错,那么说明该方法不是重写方法,这也是判断该方法是不是重写方法的一种方法。

**tips:**子类对象调用子类的方法和属性是,现在子类中找,如果子类中没有,那么就会去父类中找,会沿着继承链一直往上找。

1.2 所有类的默认存在的父类Object

1.2.1 什么是Object类?

Object类是JDK中存在的一个默认类,是所有类的直接父类或者间接父。在Object中存在的方法所有类中都具备。

1.2.2 Object类中的重要方法(暂只讲两个)
1、toString();

Object类中的toString方法:

public String toString() {
       
    return getClass().getName() + "@" + Integer.toHexString(hashCode()); 
}

示例代码:

public class Text01 {
   
	int num = 10;
	public static void main(String[] args) {
   
		Text01 t = new Text01();
		System.out.println(t);
	}
}//输出结果com.mage.methodRewrite.Text01@15db9742

代码分析:我们在打印一个对象的时候,其实默认调用的就是该对象的toString方法,该类的对象如果该类中不存在toString方法,那么就会去该类默认的父类Object类中寻找,从而输出的是上述代码简称为包名.类名@16进制的值(地址值)。

那么如果我们不要输出这样的结果,我们就要去当前类中改写toString方法,那我们看下面的实例代码:

public class Text02 {
   
	int age;
	String name;
	public Text02(){
   	
	}
	public static void main(String[] args) {
   
		Text02 t = new Text02();
		System.out.println(t);
        //输出结果是张三	30
	}
	public String toString(){
   
		this.name = "张三";
		this.age = 30;
		return (this.name+"\t"+age);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值