day 7 继承等
day7
类的继承
java只支持单继承,不允许多重继承
一个子类只能有一个父类
一个父类可以派生出多个子类
Q1:
public class TestCylinder {
double radius;
public void Circle(double radius) {
radius = 1;
this.radius = radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public double findArea() {
return 3.14 * this.radius * this.radius;
}
public static void main(String[] args) {
TestCylinder tc = new TestCylinder();
tc.setRadius(1);
System.out.println(tc.getRadius());
System.out.println(tc.findArea());
}
}
public class Cylinder extends TestCylinder{
double length;
public Cylinder() {
length = 1;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double findVolume() {
return 3.14 * this.radius * this.radius * this.length;
}
public static void main(String[] args) {
Cylinder c = new Cylinder();
c.setLength(7);
c.setLength(6);
System.out.println(c.findVolume());
}
}
试了一下是可以进行计算的,但是老师没有讲解,不知道是否正确.
方法的重写
在子类中可以根据需要对从父类中继承来的方法进行改造,也称方法的重置,覆盖.
在程序执行时,子类的方法将覆盖父类的方法
1.重写方法必须和被重写方法具有相同的方法名称,参数列表和返回值类型.
//子类重写父类的方法,只是重写编写方法体(大括号内)的代码,如果父类的方法是public的,子类重写就不能使用缺省以下的
2.重写方法不能使用比被重写方法更严格的访问权限.
3.重写和被重写的方法须同时为static的,或同时为非static的.
4.子类方法抛出的宜昌不能大于父类被重写方法的异常.
在eclipse中,在子类下alt+/会呼出方法的重写
如果子类和父类在同一个包下,那么对于父类的成员修饰符只要不是私有的private,那就可以使用.
关键词 super
super可以支付使用父类的成员变量,也可以追溯使用父类的成员方法
可以使用super向上追溯父类的父类,当然也可以一直向上追溯,如果有那么多个层级的父类的话.
在子类中,调用父类的构造器,必须放在构造器首行
多态
1.需要存在继承或者实现关系
2.要有覆盖操作
成员方法:
1,编译时,要查看引用变量所属的类中是否有所调用的方法.
2.运行时,调用实际对象所属的类中的重写方法.
成员变量:
不具备多态性,只看引用变量所属的类.
instancof操作符
对象 instanceof 类
检测对象是否是类的对象,返回值为布尔值
//Person 父类,Student 子类
Object 类
Object类是所有java类的父类,有成为基类
public class Person{
}
等价于
public class Person extends Object {
}