继承:英文名:inheritance。是面向对象编程的核心机制之一,其本质是在已有基础之上进行的扩充和改造。关键字是:extends。
在Java语言中只能支持单继承,不允许多继承。
(1)一个子类只有一个父类
(2)一个父类可以派生出多个子类
核心的概念:方法重写:overwrite,在子类中根据需要对父类中继承的方法进行重新定义。
以下是继承相关代码的简单演示:
public class Person
{
private String name;
private int age;
public Person()
{
}
public Person(String name, int age)
{
this.name = name;
this.age = age;
}
//set和get方法
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return age;
}
public String getInfo()
{
return "Name:" + name + "\nAge:" + age;
}
}
public class Student extends Person
{
public Student()
{
}
private String school;
public void setSchool(String school)
{
this.school = school;
}
public String getSchool()
{
return school;
}
public String getInfo()//方法的重写
{
return super.getInfo() + "\nSchool:" + school;
}
}
public class TestStudent
{
public static void main(String[] args)
{
Student stu = new Student();
stu.setName("张三");
stu.setAge(30);
stu.setSchool("qqhru");
System.out.println(stu.getInfo());
}
}
长方形和正方形的案例:
public class Rectangle
{
protected double length;
protected double width;
public Rectangle()
{
}
public Rectangle(double length, double width)
{
this.length = length;
this.width = width;
}
public double calcPerimeter()
{
return 2 * (length + width);
}
public double calcArea()//面积保留三位,第四位四舍五入
{
return (int)((length * width) * 1000 + 0.5) / 1000.0;
}
public String toString()
{
return "长方形的长:" + length + ",宽:" + width;
}
}
public class Square extends Rectangle
{
public Square(double side)
{
super(side,side); //调用父类的构造方法
}
public double calcPerimeter()
{
return super.calcPerimeter();
}
public double calcArea()
{
return super.calcArea();
}
public String toString()
{
return "正方形的边长:" + length;
}
}
public class TestShape
{
public static void main(String[] args)
{
Rectangle rectangle = new Rectangle(15.82,10.73);
Square square = new Square(7.75);
System.out.println(rectangle + ",其周长:" + rectangle.calcPerimeter() + ",其面积:" + rectangle.calcArea());
System.out.println(square + ",其周长:" + square.calcPerimeter() + ",其面积:" + square.calcArea());
}
}
测试结果截图: