面向对象(构造方法、封装、继承、多态、接口和抽象类的区别)

目录

一 类

二 构造方法

三 方法重载

四 修饰符

五 封装

六 继承

七 多态

八 抽象类

九 接口


一 类

类:就是 具有相同的属性和功能 的对象 的抽象集合
实例:就是一个真实的对象
实例化就是创建对象的过程

二 构造方法

构造方法:是为了对类进行初始化
使用new 关键字来创建对象的时候,就是在调用构造方法

package com.qing.demo.bean;

public class Cat {
    private String name;

    public Cat() {
        System.out.println("我是无参构造方法");
    }

    public Cat(String name) {
        this.name = name;
        System.out.println("我是有参构造方法");
    }

    public String getName() {
        return name;
    }

}

测试类

@Test
	void test1() {
		//等号右边的 new后面的Cat()其实就是构造方法
		//构造方法:是为了对类进行初始化
		Cat jiafei = new Cat();
		Cat yingduan = new Cat("灰蓝");
		System.out.println("英短猫的名字是"+yingduan.getName());

	}

控制台

三 方法重载


方法重载:使得可以创建同名的多个方法(参数类型或参数个数必须要有所不同)
目的:提供了函数可扩展的能力(在不改变原方法的基础上,新增功能)

如下:方法重载需要参数类型或参数个数有所不同,跟参数变量名无关

 

四 修饰符


为什么有时候使用修饰符public,有时候使用private?

这就好像我们的房子,我们不希望房子是全透明的,那样你在家里的所有活动都被看得清清楚楚,毫无隐私。
我们的房子一般是有门有窗,但更多的是不透明的墙,门和窗其实就是public,而房子内的东西其实就是private

五 封装


每个对象都包括它能进行操作的所有信息(这个对象不必依赖其他对象来完成自己的操作)

封装的好处


1 良好的封装能减少耦合
2 类内部可以自由修改
3 类具有清晰的对外接口(比如public修饰的属性和方法)

封装 就是我们房间内所有的摆设都可以随意的改变而不用影响他人。
封装对象暴露在外的属性和方法(门窗),可以流通空气、带来阳光、供人进出。

六 继承


继承代表了 is a 的关系

如果两个对象A和B,可以描述为B是A,则表明B可以继承A
比如 猫是哺乳动物,猫可以继承哺乳动物。

继承者还可以理解为被继承者的特殊化

继承者除了具备被继承者的特性外,还具备自己独有的个性。
比如 猫除了有哺乳动物的 胎生、哺乳特点,猫还可以抓老鼠,可以爬树。

如果子类继承于父类


1 子类拥有父类非private的属性和功能
2 子类具有自己的属性和功能(子类可以扩展父类没有的属性和功能)
3 子类还可以用自己的方式实现父类的功能(方法重写)

继承的优点

把子类所有公共的部分放在父类,使代码得到了共享,避免了重复。

 继承的缺点

父类变,子类不得不变。

七 多态


猫和狗都是动物,动物会叫,但猫和狗的叫声是不一样的。

Cat和Dog都继承Animal ,Animal 里有方法jiao(),Cat和Dog各自重写jiao()方法,当animal调用jiao()方法时,叫声就不一样,这就是多态。

 测试代码

Animal animal1 = new Cat();
Animal animal2 = new Dog();
animal1.jiao();
animal2.jiao();

结果

八 抽象类

把实例化没有意义的父类 可以改为抽象类
把方法体没有意义的方法改为 抽象方法

注意点

1 抽象类不能被实例化
2 抽象方法是必须被子类重写的方法
3 如果类中包括抽象方法,那么类就必须定义为抽象类

可以考虑让抽象类拥有尽可能多的共同代码,拥有尽可能少的数据。
抽象类通常代表一个抽象概念,它提供一个继承出发点。
当设计一个新的抽象类时,一定是用来继承的。
所以,在一个以继承关系形成的结构里,树枝节点应该是抽象类,树叶节点应该是具体类。
 

九 接口

注意点

实现接口的类就必须实现接口中所有方法
接口中的方法不能有修饰符(接口中所有方法都是默认 public abstract)
一个类可以实现多个接口
接口的概念可以让用户和其他开发人员更容易理解其他人的代码
接口的名字,前面要加一个大写字母I

 

接口和抽象类的区别


1 一个类只能继承一个抽象类,但可以实现多个接口
2 抽象类里可以有抽象方法,也可以有不抽象的方法;接口中所有方法都是抽象的;
3 类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象
如果行为跨越不同类的对象,可使用接口;对于一些相似的类对象,使用继承抽象类。

比如飞机、鸟、超人是完全不相关的类,但都具有飞的行为,此时让他们实现相同的飞行接口即可。


实现接口和继承抽象类并不冲突。

从设计的角度讲,抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类。
而接口是根本不知子类的存在的,方法如何实现还不确定,预先定义了。

抽象类是自底而上抽象出来的,接口是自顶向下设计出来的。
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值