2021-07-08多态 Object 抽象 接口

1.多态

软件设计六大原则

1).单一职责原则

原则思想:一个方法只做一件事,一个类只负责一个职责,这样当前职责改动,不会对其他程序产生影响

常识原则,几乎所有的程序员都会遵守这个原则

优点:降低类和类之间的耦合度,提高可读性,可维护性,可扩展性,降低可变性的风险

2).里氏替换原则

原则思想:能使用父类的地方就一定可以使用子类

子类还可以扩展父类的功能,但是不能更改父类的功能,并且子类还可以有自己特有的功能

优点:增强了程序的健壮性即使有了新的子类原子类不受影响,可以正常执行

3).依赖倒置原则

原则思想:高层次不应该依赖低层次,都应该依赖于抽象

优点:拥抱多种变化,可以减少需求带来的工作量

4).接口隔离原则

原则思想:类和接口之间应该建立在最小的接口上

  1. .迪米特法则

  原则思想:又称为最少知识原则,一个对象竟可能的少了解其他对象

6).开闭原则

原则思想:对修改关闭,对扩展开展

尽量可能通过软件实体来解决需求的变化,而不是通过修改已有的代码来完成变化

2.什么是多态:

   多态就是里氏替换原则的一种体现,能使用父类的地方就一定可以使用子类  

多类就是父类引用指向子类对象

父类引用:使用父类类型 创建的引用类型变量

指向:通过这个引用可以找到谁

通过父类创建的一个引用类型变量,找到了子类的对象

父类类型   变量名=new 子类();

3.怎么用

多态的几种形式:

1.直接多态: 父类 变量=new 子类();

2.形参/实参:参数列表用父类声明, 调用方法 , 传递子类对象

Public void m1(Animal a){}

m1(new Cat());

3.返回值多态:返回值类型是父类类型,但是但是返回的对象 是子类对象

4. 为什么这么用

多态的扩展性强

缺点

丢失了子类特有的属性

  1. 编译阶段和对象没有关系就算给变量赋值为null都可以,虽然会报空指针异常但是也可以运行,

6.向下转型

  多态:又叫做向下转型  子类到父类是向上    父类到子类是向下    想要向下转型必须先发生向上转型

7.多态属性调用

父类没有的,都调用不了(因为多态缺点,丢失子类特有属性)

父类有的,子类没有的,执行父类

父类和子类都用,除了成员方法执行子类,其他全部执行父类

8.抽象

抽象类往往表示设计中得出的抽象概念 就是你声明的类太没有具体的属性值 比如说你声明一个动物类 类里有一个跑的方法  但是不同动物跑的方法不同  所以这个方法是不能具体化的.

Abstract :修饰符,修饰的是类的抽象类,修饰的方法是抽象方法

抽象方法:使用abstract修饰成员方法并且该方法没有方法体就是没有大括号

抽象类:不能被实例化,只能用于被继承

一般抽象类中只有功能的定义,但是没有功能的实现,子类必须覆写

抽象类和普通类几乎一样只有两点不同

1.不能创建对象2.可以抽象方法

非抽象类继承抽象类,必须实现所有的抽象方法

抽象类继承一个非抽象类,可以实现0~N个抽象方法

注意:

Abstract和final不能同时出现

Abstract修饰的类,是抽象类就是用来而被继承的 而final修饰的类不能被继承

Abstract修饰的方法是抽象方法, 而抽象方法就是被用来被覆写实现的,而final修饰的成员方法,不能被覆写

9.接口

引用数据类型:类,数组,接口

接口是一种引用数据类型,可以看做是一个特殊的类,为了解决java中单继承功能变弱问题

一个类只能继承一个父类,但是可以实现N个接口

1.[修饰符]interface接口名{}

2.1.8版本之前接口中只有抽象方法和常量(public static final)

3.接口中public static final 还有abstract都省略(接口中没有变量,只有常量,写个方法就是抽象方法)

4.接口没有构造方法,不能创建对象

5.一个类实现一个接口,需要实现所有的抽象方法

6.一个抽象类实现一个借口,需要实现0~N个抽象方法

   1.8接口新特性

1.8之前只能有抽象方法

1.8开始 可以有静态方法和默认方法(可以理解为类的成员方法)

接口是不能创建对象的,但是可以发生多态

在接口里常量可以省略public static final直接写String 变量名=”xxxx”;

接口和接口之间是多继承,多个以逗号隔开

类和接口直接多实现,保留类继承,所以当抽象类和接口都满足需求的时候,优先使用接口

一个非抽象类实现接口后,需要实现所有抽像方法

一个抽象类实现接口后需要实现0~N个抽象方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值