黑马程序员——继承1

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

< 今日心情 >抓紧时间,继续!

一、 概述

当描述的几种不同事物间有共性的属性和行为时,也就是说在不同的类中存在相同意义的变量和方法时,可以将这些共性的内容抽离出来形成一个新的类,使用一种方式让多个类拥有新类的所有内容,这样就不需要在这些类中定义这些共性的内容了。

这种方式就是继承。

新形成的类就是父类,多个类就是子类。

格式

class 类名 extends 父类名

{

}

class Baby
{
	public String name="gou dan";
	public char sex='男';
	public void speak()
	{
		System.out.println("我叫:"+name+",我是一个"+sex+"孩");
	}
}
class Boy extends Baby
{
	public void wuShu()
	{
		System.out.println("我有一个双节棍,呼呼哈嘿!");
	}
}
class Girl extends Baby
{
	public void dance()
	{
		System.out.println("我是一只小天鹅。");
	}
}
class ExtendsDemo 
{
	public static void main(String[] args) 
	{
		Boy boy=new Boy();
		boy.name="蛋蛋";
		boy.speak();
		boy.wuShu();
		Girl girl=new Girl();
		girl.name="丫丫";
		girl.sex='女';
		girl.speak();
		girl.dance();
	}
}

注:子类只可以继承父类非私有成员

继承的出现提高了代码的复用性。

继承的出现让类与类之间产生了关系,提供了多态的前提。

二、 继承的特点

java只支持单继承,不支持多继承。
也就是说一个类上只能有一个extends + 一个父类名

java支持多层继承

子类也可以被其他类继承,也就是说一个类既可以作为子类同时也可以作为一个父类存在

覆盖:

子类中定义与父类相同的成员函数,可以覆盖父类成员函数。

注:

private修饰的函数不能被覆盖。

子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败。
静态只能覆盖静态。

注意:

不要为了简化功能而去继承,父类和子类之间描述的事物一定要有关系才能继承。

这种关系是子类is a 父类

三、 super关键字

super和this用法相同,意义不同。
this代表本类引用,super代表父类引用。
super可以访问被覆盖的父类成员。

子类构造函数中要调用父类构造函数是,用super语句,与this用法相同。

子类构造函数中默认有一个super(),当父类没有空构造函数时就需要手动添加了。

也可以手动添加super访问父类非空构造函数。

super要写在第一行。

注:当父类构造函数中已经完成了某些初始化动作,子类可以使用super调用。简化书写,提高代码的复用性。

class Baby
{
	public String name="gou dan";
	public char sex='男';
	public Baby(String name,char sex)
	{
		this.name=name;
		this.sex=sex;
	}
	public void speak()
	{
		System.out.println("我叫:"+name+",我是一个"+sex+"孩");
	}
}
class Boy extends Baby
{
	public Boy(String name,char sex)
	{
		super(name,sex);
	}
	public void wuShu()
	{
		System.out.println("我有一个双节棍,呼呼哈嘿!");
	}
}
class Girl extends Baby
{
	public Girl(String name,char sex)
	{
		super(name,sex);
	}
	public void dance()
	{
		System.out.println("我是一只小天鹅。");
	}
}
class ExtendsDemo 
{
	public static void main(String[] args) 
	{
		Boy boy=new Boy("蛋蛋",'男');
		//boy.name="蛋蛋";
		boy.speak();
		boy.wuShu();
		Girl girl=new Girl("丫丫",'女');
		//girl.name="丫丫";
		//girl.sex='女';
		girl.speak();
		girl.dance();
	}
}


子类实例化过程:

子类实例化过程中就是在调用构造函数中的super,因为要明确父类中变量的初始化。

四、 final关键字

final修饰符有“终结”的意思。
final可以修饰类,函数,变量
被final修饰的类不可以被继承。final类不可以做父类。
被final修饰的函数不可以被覆盖。
被final修饰的变量只有被定义的时候可以赋值一次。
内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值