输出结果:
   父类中的tell方法
   我重写了tell方法
   父类中的tell方法
方法重载(Overloading)
方法重写(Override)
定义 方法名称相同,参数的类型或个数不同 方法名称、参数类型、返回值类型全部相同
权限要求 对权限没有要求 被重写的方法不能拥有比父类更加严格的权限
范围 发生在一个类中 发生在继承中
2.3 抽象类与接口
  final能申明类、方法和属性,使用final申明的类不能被继承,使用final申明的方法不能被重写,使用final申明的变量变成常量(定义时要赋值),常量是不可以修改的。
  抽象类:包含一个抽象方法的类就是抽象类。
定义:
abstract  class ClassName{
    属性
    方法
    抽象方法
}
(1)抽象方法:申明而未实现的方法,抽象方法必须使用abstract关键字申明,只有方法名和参数,没有方法体。
(2)抽象类被子类继承,子类(若不是抽象类)必须重写抽象类中的所有抽象方法。
(3)抽象类不能实例化,要通过其子类进行实例化。
public class AbstractClassDemo1 { 
    public static void main(String[] args) { 
        StuClass stuClass=new StuClass(); 
        stuClass.tell(); 
        stuClass.say(); 
    } 
} 
  
abstract class AbsClass{ 
    int age; 
    public void tell(){ 
        System.out.println("父类中的tell方法"); 
    } 
    public abstract void say(); 
} 
  
class StuClass extends AbsClass{ 
    @Override
    public void say() { 
        System.out.println("子类实现父类抽象类中的say抽象方法"); 
    } 
}
接口可以理解为一种特殊的类(没有构造方法),里面全部是由全局常量和公共的抽象方法组成,接口的实现必须通过子类,使用关键字implements,而且子类可以多实现接口。一个接口不能实现(implements)另一个接口,但它可以继承多个其它的接口。接口定义如下:
[修饰符] interface 接口名 [extends 父接口名列表]{
    [public] [static] [final] 全局常量;
    [public] [abstract] 抽象方法;
}
样例:
public abstract class InterfaceDemo1 { 
    public static void main(String[] args) { 
        InterfaceClass interfaceClass=new InterfaceClass(); 
        interfaceClass.print(1.0f); 
    } 
} 
  
class InterfaceClass implements CalInterface1,CalInterface2{ 
    @Override 
    public void print(float r) { 
        System.out.println("半径为"+r+"的圆面积:"+getArea(r)+",周长:"+getCircumference(r)); 
    } 
    @Override 
    public float getArea(float r) { 
        float area=PI*r*r; 
     return area; 
    } 
    @Override 
    public float getCircumference(float r) { 
        float circumference=2*PI*r;   
     return circumference;  
    } 
} 
//定义接口CalInterface1 
interface CalInterface1  
{ 
    float PI=3.14159f;//PI默认为public static final类型 
    float getArea(float r);//方法getArea()默认为public abstract类型,注意抽象方法没有方法体  
    public abstract float getCircumference(float r);//计算面积 
} 
//定义接口CalInterface2 
interface CalInterface2 
{     
    void print(float r);//打印输出结果 
} 
//定义接口CalInterface3,继承接口CalInterface1和CalInterface2 
interface CalInterface3 extends CalInterface1,CalInterface2{ 
      
}
输出结果:
    半径为1.0的圆面积:3.14159,周长:6.28318

