Java面向对象基本特征(3)

输出结果:
  父类中的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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a88d744f8421d9fcdc5ed7eaf7b9abb4.html