JAVA菜鸟入门篇 - 面向对象三大特征之一:继承 ,方法重写(override)和Object类 (十四)

面向对象三大特征:
    - 继承
    - 封装/隐藏
    - 多态

一、继承:
    - 类是对对象的抽象,继承是对某一批类的抽象,(OOD)从而现实对现实世界更好的建模
    - 提高代码的复用性!(OOP)
    - extends的意思是“扩展”。子类是父类的扩展。

现实生活中,构建关于动物之间的模型,动物的种类的很多,我们会依赖继承的关系来构建。(如下所示),对动物模型的分类,更加方便我们认识动物世界。


对于动物世界的简单分类,我们分类哺乳动物(mammal)和爬行动物(paxing)

<span style="font-size:18px;">     <span style="color:#ff0000;"><strong>简单构建动物世界模型:哺乳动物和爬行动物</strong></span></span>

/**
 * 测试继承
 * 简单构建动物世界模型:哺乳动物和爬行动物
 * @author dell
 *
 */
public class Animal /*extends Object*/ {
	String eye;
	
	public void run(){
		System.out.println("跑跑!");
	}
	public void eat(){
		System.out.println("吃吃!");
	}
	public void sleep(){
		System.out.println("zzzzz");
	}
	
	public  Animal(){
		super();
		System.out.println("创建一个动物!");
	}

}

// mammal 哺乳动物
class Mammal extends Animal {
	
	public void taisheng(){
		System.out.println("我是胎生动物");
	}
	
}
//paxing 爬行动物
class Paxing  extends Animal {
	
	public void eggSheng(){
		System.out.println("我是卵生动物");
	}
	
}


     继承小结:

- 子类继承父类,可以得到父类的全部的属性和方法(除了父类的构造方法)。


- java只有单继承,没有像C++那样的多继承。多继承会引起混乱,使得继承链过于复杂,系统难以维护。就像        我们现实中,如果你有多个父母亲,那是一个多么混乱的世界。多继承,就是为了实现代码的复用性,却引入了复      杂性,使得系统之间的关系混乱。


- java的多继承,可以通过接口来实现!(接口后期我们会学习)


- 如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object


- 不同的叫法:超类 父类  基类  子类 派生类


    总结:继承的第一个特点一个类只能有一个直接父类!


     继承第二个特点:方法的重写(override)


  - 在子类中可以根据需要对从基类中继承来的方法进行重写


   - 重写的方法必须和被重写方法具有相同方法名称、参数列表和返回类型


   - 重写方法不能使用比被重写方法更严格的访问权限(由于多态)


   重写的方法必须和被重写方法具有相同方法名称、参数列表和返回类型,但是实现内容不一样


   - 重写方法不能使用比被重写方法更严格的访问权限(由于多态)

<span style="font-size:18px;">/**
 * 测试继承第二个特点:方法的重写
 * @author dell
 *
 */
public class Animal /*extends Object*/ {
	
	public void run(){
		System.out.println("跑跑!");
	}
	
}

//paxing 爬行动物
class Paxing  extends Animal {
	
	public void run(){
		System.out.println("爬行!"); 
	}
		
}</span>

从上面我们可以看得出来,Paxing类继承Animal类,Paxing类中重写了Animal类中的run()方法。


二、Object类

Object类是所有Java类的根基类
如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object

我们
先熟悉Object中的toString方法:

默认返回:包名+类名+@+哈希吗(根据对象内存位置生产,唯一不重复)

<span style="font-size:18px;">/**
 * 熟悉Object类中toString的方法
 * @author Dell
 *
 */
public class TestObject {
	public static void main(String[] args) {
		Object obj = new Object();
		Object obj2 = new Object();
		System.out.println(obj.toString());
		System.out.println(obj2.toString());
		System.out.println(obj==obj2);
		System.out.println(obj.equals(obj2)); 	
	}
}</span>
运行结果:

java.lang.Object@55e6cb2a
java.lang.Object@23245e75
false
false


接下来我们重写:toString方法:


<span style="font-size:18px;">public class Mobile {
	
	public String toString(){
		return "我是一部移动电话";
	}
	
	public  static void main(String[] args){
		Mobile mobile = new Mobile();
		System.out.println(mobile.toString());
	}
}</span>
显示结果:我是一部移动电话

Mobile类默认继承Object类,实现Object类中toString方法的重写


本文参考:非常感谢北京尚学堂高琪老师!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值