抽象类
先了解一下抽象类的概念。
一个完整的方法,是有:
1、方法声明
2、方法体
public void show(){
方法体;
}
而如果只包含方法声明,没有方法体,那么就称之为:抽象方法。(abstract是抽象的声明)
public abstract void show();
只有抽象类中才能够有抽象方法,但抽象类中也可以有非抽象方法。
public abstract class Demo{
public abstract void Show();
public void Down(){
System.out.println("这是一个普通方法");
}
}
那么问题来了,为什么要有抽象类呢?
抽象类的目的,是为了定制一些标准(抽象方法),要求限制,让继承这个类的子类必须去实现这些标准,也就是必须重写这些方法。
方法重写:子类重写父类的方法时,方法名称、参数、数据类型、顺序、返回值都要保持一致。
使用抽象类的好处:体现JAVA的多态,并且一个父类可以被多个子类实现,这样能够不同的子类实现不同的功能。
注:一个子类只能实现一个父类。
抽象类,不能被直接实例化,只能通过它的子类进行实例化
正确写法:
抽象类 obj = new 抽象类子类();
此处有个注意点,子类继承父类后,必须重写父类中的抽象方法,非抽象方法可以不用重写。
好了,搞清楚抽象类的概念后,回归主题。
什么是继承 extends?
子类继承父类以后,拥有父类的方法、属性,并且还可以定义自己的方法和属性。
语法:
public void 子类 extends 父类{
}
父类,也称为超类、基类。
子类,也称为派生类。
具体的详情可以去看我的另一篇博客:https://blog.csdn.net/weixin_44253047/article/details/115040785
简略了解了继承后,再来了解一下接口。
接口 interface
与抽象类唯一的区别,在接口中一定只有抽象方法
public interface Students{
public void add();
}
并且接口的作用,是为了让子类去实现重写它的抽象方法,这点不同于继承。
继承是父亲的资产给孩子,而接口,是父亲的愿望让孩子实现。
public class Service implements Students{
public void add(){
System.out.println("这是重写了接口中的抽象方法");
}
}
使用接口更加安全,也符合Java面向对象的特性之一:封装。
这里就得说说面向对象和面向过程的区别
有一天你想吃一道番茄炒蛋,两种方法
1、你自己购买鸡蛋、番茄,然后打鸡蛋、切番茄,下锅,最后出锅。
2、去饭店,点菜,等上菜,干饭。
1就是面对过程,2就是面向对象。
面向对象有什么优势呢?
首先,你不需要知道这道菜怎么做,这就降低了耦合性。假如你不想吃番茄炒蛋了,这时候如果面向过程,那你还得再去买其他食材重新做,而如果是面向对象,你可以跟老板说换个菜。
用到编程中呢,就是面向过程,如果这个功能你不想要了,需要再编写代码,而面向对象,你换个方法调用即可。
面向过程是具体化、流程化的,你需要自己一步一步的分析,再编写。
而面向对象是模型化,你只需要抽象出一个类,然后调用其中的方法,这就体现了封装性,因为其中的底层代码都已经封装在盒子里了,而你就是直接把盒子里的东西取出来用,不需要你去自己造,会用即可。
面向对象的底层其实还是面向过程,只是把面向过程抽象成类,然后封装了起来,方便我们使用。
最后总结,封装就是隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。
2021-3-22学习笔记
我是若秋,一个在学习Java的小白。
愿各位程序猿们越变越强!