提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

@[TOC]JAVA中抽象类和方法的重写


前言

1、用abstract关键字来定义的类叫抽象类,abstract关键字定义的方法叫抽象方法,抽象方法在的类一定要定义为抽象类,而且抽象类必须被继承,这样才能实现对抽象方法的重写。
2、抽象类不能被实例化,只需声明,不用实现。
3、方法的重写:
条件一 两个类必须有继承关系
条件二 重写后的方法必须和父类的方法具有:
(1)相同的返回值类型
(2)相同的方法名
(3)相同的形参列表,也就是参数个数和类型都一致
条件三 重写的方法的访问权限不能更低


一、定义抽象类

public abstract class Person {
    /*注意:抽象类中的抽象方法没有大括号*/
    public abstract void show(String name,int age);
}

二、定义实现类(也就是子类)

//        Student类继承了Person类
public   class Student {
//      重写了Person类中的show方法,方法名相同,返回值相同,形参列表相同
        public  void show(String name,int age) {
            System.out.println(name+age);
    }
}

三、访问修饰符

重写的方法的访问权限不能更低的意思是因为子类是从父类那里继承来的,子类意义上可以替换父类能出现的地方,并且不影响代码的运行,如果子类重写的方法访问权限低于父类的方法,那么会导致在某一些地方不能实现该方法,例如:父类的抽象方法访问修饰符是public,而子类的重写方法的访问修饰符是private,子类的方法只能在本类中使用,不能在其他类或者包外使用,而父类的方法却是公开的,可以在任何地方访问,这就违反了“子类可以替换父类能出现的地方”。
(按自己的理解啰里啰唆讲了这么多,不晓得有没有表达清楚,哈哈哈。参考的里氏代换原则,如果有错误的,请各位大佬指正,谢谢谢谢)
Java常用的四种访问修饰符权限:
public>protected>default(默认)>private

public abstract class Person {
   //父类的抽象方法设了protected访问修饰符
    protected abstract void show(String name,int age);
}

java如何重写equals java如何重写抽象方法_抽象类


总结

(1)抽象类是出于定义的时候不知道这个类具体的工作或者业务,只知道这个类大概用来干什么的。
(2)抽象类中可以没有抽象方法,编译器也不报错,当然如果不放抽象方法,定义抽象类意义也不大。