JAVA学习笔记之抽象类与接口2020-3-22

抽象类

先了解一下抽象类的概念。
一个完整的方法,是有:

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的小白。
愿各位程序猿们越变越强!

猜你喜欢

转载自blog.csdn.net/weixin_44253047/article/details/113930108
今日推荐