java类有四大特点——继承、封装、多态和抽象。今天最主要学习了类的继承的特点,继承也是面向对象编程中最重要的特征之一。它允许通过继承一个已经存在的类,来编写一个新类。很明显,类的继承特点让我们在编写程序的过程中减少了许多重复的代码编写,让程序整体变得简洁,更易分析。我们把已存在的定义好的基础类叫父类或者基类(超类),将新派生出的类叫做子类或者派生类。java中使用“is a”关系判断继承。“is a”关系是一个简单而强大的规则,用于判断父类和子类的继承关系是否正确。java中,一个类使用关键字extends继承其它的类。关键字extends出现在类声明时的类名之后,extends后面跟着的是要继承的类的名称。java不像C++等语言允许子类有多个父类,在java中是不允许一个子类有多个父类的,一个类只能够有一个父类。这也是java语言的目标之一,就是创建一个易于使用和理解的面向对象编程语言。一个java类只能有一个父类,但这并不意味着一个父类不能再有父类,一个java类可以有父类,父类同样可以有父类,一次类推。
在同一个类和不同类之间有涉及到一个很重要的问题——方法的重写和重载。方法重载是在一个类中发生的,方法名相同,参数列表不同。举个例子,比如我们将人看作一个类,他会炒菜看作一个方法,但是他今天炒了西红柿炒鸡蛋,明天炒了青椒肉丝,每天都炒不同的菜,这就是方法的重载过程。方法的重写则是发生在不同的类中的,方法名相同,参数列表相同同时返回类型也相同。还举上个例子,将人看作一个类,人会做饭看作一个方法,那么男人和女人又可以看作人类下的两个子类,其中男人做饭的话会煮面条、下饺子,而女人做饭会煮饭、炒菜,这两个子类就是将作法这个方法重写。
子类通过方法重写可以完全改变继承自父类的方法。有时子类想要给继承的方法添加行为,但是并不是完全替换父类的方法。这种情况下可以使用关键字super来调用父类中重写的方法。另外java中还有像final这样的关键字用在不同的地方有着不同的作用。final类:就是一个类被声明为最终类,不能够被子类继承。final方法:声明一个最终方法,不能够被重写。final变量:声明一个常量。
总结一下java继承类的特点:
public class Polygon {
//边数
public int sides;
//面积
public double area;
public Polygon(int sides){
this.sides=sides;
System.out.println("在polygon构造方法中");
}
public int getNumberOfSides(){
System.out.print("多边形的边数:"+sides);
return sides;
}
public String toString(){
return"这是一个多边形";
}
}
//定义一个三角形子类
public class Triangel extends Polygon{
public int base;
public int height;
public Triangel(int base,int height){
//显示调用父类的构造方法
super(3);
this.base=base;
this.height=height;
System.out.println("在Triangle类的构造方法中");
}
public String toString(){
return "三角形的高:"+height+"
三角形的底"+base;
}
public double getArea(){
area=(base*height)/2;
return area;
}
}
//定义一个直角三角形子类
public class RightTriangle extends Triangel{
//斜边
public double hypotenuse;
public RightTriangle(int base,int height){
super(base,height);
hypotenuse=Math.sqrt(base*base+height*height);
}
public String toString(){
return super.toString()+hypotenuse;
}
}