继承
package com.atguigu.exer;
public class People{
String name = new String();
int age;
public People() {
}
public People(String name,int age) {
this();
this.name = name;
this.age = age;
}
public void eat() {
System.out.println("im eating");
}
}
package com.atguigu.exer;
public class Student extends People{
String major;
public Student() {
}
}
package com.atguigu.exer;
public class Text {
public static void main(String[] args) {
People p = new People();
p.age = 99;
p.name = "扎根";
Student s = new Student();
s.name = "wse";
System.out.println(s.name);
s.eat();
}
}
继承的格式: class A extends B{} A:子类、派生类、subclass B:父类、超类、基类
体现:一旦子类A继承父类B,A获取了父类B中声明的结构
子类继承父以后,还能声明自己特有的属性或方法,实现功能的拓展
一个类只能有一个父类
如果没有显式声明一个父类的化,则此类继承于java.lang.Object类 所有java类除Object都直接或间接继承Object类
例子:
package com.atguigu.CylinderCul;
public class Circle {
private double radius;
public double getRadius() {
return radius;
}
public void setRadius(int radius) {
this.radius = radius;
}
public Circle() {
this.radius = 1;
}
public double findArea() {
return this.radius*this.radius*Math.PI;
}
}
package com.atguigu.CylinderCul;
public class Cylinder extends Circle{
private double length;
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double findVolume() {
return this.findArea() * this.length;
}
}
package com.atguigu.CylinderCul;
public class Test {
public static void main(String[] args) {
Cylinder cylinder = new Cylinder();
cylinder.setRadius(3);
cylinder.setLength(5);
double v = cylinder.findVolume();
System.out.println(v);
}
}
重写
子类继承父类后,可以对父类同名同参数的方法,进行覆盖操作 约定俗称:子类中的叫重写的方法,父类中的叫被重写的方法,子类重写的方法名和父类被重写的方法名和形参列表相同 子类重写的方法的权限修饰符不小于父类被重写的方法
声明方法: 权限修饰符 返回值类型 方法名(形参列表) throws 异常的类型{方法体}
特殊情况:子类不能声明父类声明为private权限的方法
父类被重写的方法值类型为void,子类也只能是void 父类被重写的方法为A类型,子类是A类或A的子类 父类……为基本数据类型,则子类……也为相同基本数据类型
子类重写的方法抛出的异常类型大小不大于父类被重写的方法抛出的异常
待续
|