模版网站建设步骤详解,网站域名解析时间,深圳市交易中心官网,asp.net mvc 网站开发之美 pdf抽象其实也算面向对象特征之一
抽象
含义#xff1a;当多个子类中的共性向上提取#xff0c;父类中不知道如何写具体实现#xff0c;因为提取的共性并不一定能解决子类中实现的功能【同结构不一定同实现代码体】#xff0c;就需要抽象概念
作用 父类只抽取结构#xff…抽象其实也算面向对象特征之一
抽象
含义当多个子类中的共性向上提取父类中不知道如何写具体实现因为提取的共性并不一定能解决子类中实现的功能【同结构不一定同实现代码体】就需要抽象概念
作用 父类只抽取结构不抽取实现并且子类继承了父类之后必须强制重写该结构 为什么需要用抽象类
当多个子类存在公共特性的时候会把它们公共的属性和行为向上提取比如都提取了移动的方法有跑、跳、滚、爬等等但是该方法里面不知道具体写什么因为父类里面定义的代码都是子类公共代码虽然子类可以重写父类的方法但是没有强制的约束有些子类可能没有重写那么调用移动的方法就会出现很大的问题
何为抽象类 abstract 修饰的类 例
public abstract class DemoAbstract {类成员……;
}抽象类里面的成员有哪些
A、成员变量 B、构造方法 C、普通方法(包含静态/非静态方法) D、抽象方法【先有抽象类再有抽象方法并且只有结构没有方法体】
例
public abstract class DemoAbstract {//成员变量String name;//无参构造public DemoAbstract(){}//有参构造public DemoAbstract(String name){this.name name;}//普通方法——静态修饰方法public static void demoMethodStiatic(String name){System.out.println(name);}//普通方法——非静态修饰方法public void demoMethod(String name){System.out.println(name);}//抽象方法abstract void method();
}
如何调用
在实际开发中一般都是普通类去继承抽象类从而普通类的实例化进行方法的使用 注意事项
A、abstract修饰的类不能被实例化【虽然有构造方法但是不能被实例化否则直接编译错误】 B、抽象方法不能放到普通类里面只能放到接口或抽象类中 C、抽象方法只能放到抽象类中普通类继承抽象类必须重写抽象类中的方法 如果是抽象类继承抽象类不会强制重写基类抽象类中的方法 PS1有继承关系this对于成员变量和普通方法时在当前类中找不到可以向上(父类)查找但对于构造方法只能当前类查找不能向上查找
PS2Override注解表示方法重写专门用来验证方法是否重写成功了的
PS3对于方法重写final修饰的方法不能被子类重写