java中的继承_java中继承的特点

java中继承的特点

继承是java中很重要的一个应用.那么,为什么要有继承呢?我们可以看一个实例:猫类和狗类.猫和狗是生活中常见的动物,它们有哪些共性呢?都有颜色(黑白黄花等),都有腿,都要吃饭,都要睡觉等.那么,颜色和腿的数量就是它们的属性(成员变量),吃饭和睡觉是它们的行为(功能).如果没有继承,分别写猫类和狗类,如下:

public class Cat{ //猫类

String color ;//成员变量"颜色"

int num; //成员变量"腿的个数"

class Cat (){} //无参构造

class Cat(String color,int num) { //有参构造

this.color =color;this.num =num;

}public void setColor(String color) { //set方法

this.color =color;

}public String getColor() { //get方法

returncolor;

}public void setNum(intnum) {this.num=num;

}public intgetNum() {returnnum;

}

}

狗类和猫类除了类名不一样,其他的都一样,写起来很浪费时间,也浪费内存.因此,用继承可以提高代码的复用性.这和java的跨平台道理差不多,都是为了节约和方便.

那么,在java中,具体怎么继承呢?就是让类于类之间产生关系,产生父子类关系.也就是说两个类之间一个属于另一个,就可以继承.就像猫和狗,毛不属于狗,狗不属于猫,它们俩没法继承.但是猫属于动物,狗也属于动物.动物和猫之间就可以建立继承关系.同样,动物与狗之间也可以建立继承关系.这样,动物类的一般属性和行为,猫和狗类就继承了.

java的继承中,也有一些自己的特点.第一:这种继承是单继承的关系,不支持多继承.单继承就是说一个爹可以有多个儿子,但是一个儿子只能有一个爹.多继承就是说一个徒弟可以有很多师父(孙悟空就有两个师父,一个是菩提老祖,一个是唐僧.孙悟空继承了菩提老祖的部分武艺,又跟着唐僧学做人,最后才成佛).两种继承各有各的特点,单继承呈现树状结构,比较安全.多继承呈现网状结构,随意性比较大,不太安全.Java就是选择了单继承.同时,这种继承关系是可以延续下去的,就像爷-父-子-孙这种情况,java中也是这样,叫多层继承.

第二:父类私有的成员不能继承,父类的构造方法不能继承,别的都可以继承.为什么私有的不能继承呢?因为我们要充分尊重别人的隐私,哪怕这个人是你的父亲或儿子或妻子.父类让你继承,你才可以继承,父类隐藏起来的,不想让你继承的,你就不能继承.当然,也不能抢.另外,父类的构造方法也不能继承,因为构造方法有两个作用.一是对本类成员的初始化,构造方法名和本类名相同,如果继承的话,和子类名都不一样,容易搞混.二是内含super()默认访问父类的无参构造方法.所以,子类和父类各有各的构造方法,但是子类又靠自己的构造方法默认访问父类的构造方法,相当于家谱中的血缘关系,是一条无形的纽带.自然界的万物都是有归属有继承的,java中同样如此,每个类都有继承的父类,如果没有,就是默认继承Object类.

除此之外,子类不仅要继承父类,还要有所发展,所谓青出于蓝而胜于蓝.具体到java中的继承,体现为方法的重写,也就是在子类中建立一个方法,和父类方法名一样,但又有自己独特的内容,这样一方面通过继承可以沿袭父类的功能,同时又有自己的新功能.那么在方法重写中又有那些要求呢?第一:父类的私有方法不能被重写,因为根本就没有继承,也就没有重写的基础.第二:重写的方法,访问权限不能更低.好的东西要学会分享,这样才能壮大.下面我们用猫类和狗类案例结束.

/*第一步:建立一个父类:动物类*/

class Animal{ //动物类

String color ;//成员变量"颜色"

int num; //成员变量"腿的个数"

public Animal(){} //无参构造

public Animal(String color,int num) { //有参构造

this.color =color;this.num =num;

}public void setColor(String color) { //set方法 设置"颜色"

this.color =color;

}public String getColor() { //get方法 得到"颜色"

returncolor;

}public void setNum(int num) { //set方法 设置"腿的条数"

this.num=num;

}public int getNum() { //get方法 得到"腿的条数"

returnnum;

}public void show() { //展现动物类的属性

System.out.println(getColor()+"..."+getNum());

}public voideat () {

System.out.println("吃饭");

}

}/*第二步:建立两个子类,分别是猫类和狗类*/

classCat extends Animal{public Cat (){} //无参构造

public Cat(String color,int num) { //有参构造

this.color =color;this.num =num;

}public void catchMouse() { //猫特有行为:抓老鼠

System.out.println("抓老鼠");

}

}classDog extends Animal {public Dog (){} //无参构造

public Dog(String color,int num) { //有参构造

this.color =color;this.num =num;

}public void watchHome() { //狗特有行为:看家

System.out.println("看家");

}

}/*第三步:建立测试类进行测试*/

public classTestAnimal{public static voidmain(String[] args) {

Cat c1= new Cat("黄色",4); //创建对象

c1.show(); //调用父类

c1.eat(); //调用父类

c1.catchMouse(); //调用子类

System.out.println("++++++++++++++++");

Dog d1= new Dog("白色",4); //创建对象

d1.show(); //调用父类

d1.eat(); //调用父类

d1.watchHome(); //调用子类

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值