类与继承

3 篇文章 1 订阅

类与继承

这次,我们拿人来说事。
首先,我们定义出一个Student类,在这个类里面我们有以下几个属性:
String name;
int number;
String sex;
再加上一个learn的方法:
public void learn () {……}
代码如下:

	public class Student{
		public String name;
	  	public int number;
	  	public String sex;
	  	public void learn (){
	  	……
	  	}
	}

对于每一个Student类定义的对象(即学生),我们可以这样理解:他们都有name、number、sex这三个属性,并且他们都有相同的学习方法。

好,那么到重点了,继承。
所谓继承,就是我们新定义一个类,这个类能够获得我们之前定义的一个类所有属性,就如我们定义一个Teacher类,然后我们能让他继承Studen类的所有属性。如代码:

public class Teacher extends Student{
    	public void learn (){
 		……
		 }
 }

这样定义,teacher类就获得了Student类的所有属性,这些属性能够被Teacher定义的对象随意调用。

我们有一个人的一生这样去理解:
当他处在学生时代的时候,他就有名字、身份证号、性别这些属性。
当他长大成为老师后,他依然有名字、身份证号、性别属性。所有的这些属性都是必定存在的,但是随着年龄的增长,他的学习方式可能会有所改变,也就是我们类中learn的内容可能发生改变,此时我们可以选择将类中的learn方法改变或者保留。这里的改变就是“方法的重写”的概念,继承的类能够重新定义被继承的类的learn。
方法的重写类的继承共同决定了多态,即相同对象调用相同方法得到的结果可能会不一样。

那么,如果Teacher类继承Student类之后,是否还能被视为Student类呢?
答案是肯定的,一个Teacher类继承Student类以后,一样能被看作Student(谁说成为了老师就不能变成学生的了?那些年轻老师有的还在读研呢!)但是,同样的,他们依然处于同一个时期,也就是说,他们再次被当成学生时,学习方法依然与在Teacher的是一样的,调用时不会调用Student类中的learn,而是会调用Teacher类的learn。
接着再来看看“自动转型和强制转型”
我们再设定一个大学生类UNStudent,所谓自动转型与强制转型见代码:

	public static void main (String [] args) {
		Student stu = new UNStudent ();
	//创建大学生类的对象,再将其定义为学生类型,将子类对象重新定义成父类,这就是自动转型
	/但注意,将子类转成父类后,不能调用子类的特有的方法
		UNStudent stu2 = (UNStudent) stu;
	//将父类的对象转换成子类,即为强制转型
	//父类转成子类以后,对象就只能调用子类所特有的方法了。
	}

强制转型含义就与自动转型相反,但是对象经过这些转型之后,它所能调用的方法都只能对应他们现在所对应的类型,但是自动转型与强制转型有一个特点,那就是:如果一个对象可以被强制转型,那它肯定在前面某个地方被自动转型过!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值