今天我们讲了java继承的相关内容,左老师(左哥)总是可以用很生动的例子来加深我们对继承的理解,我也是努力的去消化左哥讲的知识点。下面我来跟大家谈谈我对java继承的初步理解。
首先,要对继承进行学习,必须先弄明白三大类,普通类、抽象类、接口类。 普通类,只可以有普通方法和构造方法,可以创建对象(这是和抽象类、接口类不同的特点)。抽象类可以包括普通方法、构造方法、抽象方法,但是不可以创建对象。而接口类只有抽象方法,并且和抽象方法相同,不可以创建对象(重要的事情说三遍。抽象类和接口类都不可创建对象,只有普通类可以)。
现在我们初步了解了三大类,现在讲解一下继承的概念。继承,顾名思义儿子继承父亲的财产。左老师讲的这个例子真的很形象,父亲可以有好多儿子,但是儿子只可以有一个父亲。继承(父子),包含父类和子类,子类通过继承关系获取父类的所有非私有权限的属性和方法 ,属于单继承关系。继承可以分为好多种,包含普通类继承普通类、普通类继承抽象类、普通类继承接口类、抽象类继承接口类。这么多继承关系用现实中工作上下级关系就可以很好的理解了。类接口抽象类体现模型:程序员(动手不动口)->小组长(动口也动手)->项目经理(动口不动手)。程序员属于普通类,需要执行(继承)小组长和项目经理的要求(有权限属性),所以它是动手不动口。项目经理属于抽象类,只有发布要求(属性),不需要去执行命令,所以是动口不动手 小组长属于抽象类,因为抽象类包括普通方法、构造方法和抽象方法,属于普通类和抽象类的集合,所以既需要动手(相对于项目经理)又需要动口(相对于程序员)。
在继承中,由于各类之间所允许使用的方法不是相同的,所以需要在继承不被允许的方法时需要进行方法重写,即子类重写父类的方法。重写条件:子类的方法名、参数、返回值必须和父类继承过来的方法一致,方法体不一样。
比如普通类继承抽象类时候,由于抽象类可以包括抽象方法,所以需要对抽象方法普通化。例如让人继承学生的学习的能力。
//普通类
public class People{
public string name;
public string sex;
public int weight;
public void play(){};
public viod speak(){};
public viod run(){};
}
//抽象类
public abstract class Student{
public abstract void study();
}
//普通类继承抽象类
public class People extends Student{
public void study(){}
}
再还有普通类继承接口类。需要对接口类抽象方法进行普通化。//普通类
public class People{
public string name;
public string sex;
public int weight;
public void play(){};
public void speak(){};
public void run(){};
}
//接口类
public class Teacher{
public void teach();
}
//普通类继承接口类
public class People implements Teacher{
public void teach(){};
}
在继承中还存在自动转型和多态现象。以下代码为例。自动转型就是说当子类继承父类的时候,子类对象自动转型为父类类型转型后的对象,如果子类重写了父类方法,则执行的是重写后的方法。
则多态现象是同一个类型的对象,执行同样方法,执行过程不一样(子类重写)造成的。
原因:由于自动转型+子类重写父类方法 , 执行的是子类重写后的方法。
//自动转型
//多态现象
public class Text{
public static void main(String[] args) {
Student peo = new People();//自动转型
People peo1 = new People();
Student stu = new Student();
peo.study();
peo1.play();
stu.syudy();
}
}
构造函数,访问权限 类名(){}。用来构造对象。当创建对象的时候执行构造函数,并且将构造函数执行后结果的地址传递给对象,所以构造函数是有返回值的。
方法重载,在一个类中,具有相同的方法名,不同的参数类型、参数个数、参数顺序不一样的方法。
在构造方法重载的时候如果重载了构造函数,则类中默认的构造函数将失去作用。如果还需要用到无参的构造函数,则必须重新定义在类中。
以上就是我这一节课的对继承的感受和理解,在自动转型和多态现象方面理解的不是很深刻,或许会有些错误,本文仅是个人对继承的理解,仅供参考。如有抄袭,后果自负。