Java学习笔记:03面向对象-接口_多态

1.类的概念

一堆具有共同的成员变量(属性)和成员方法(功能)对象的集合

2.接口的概念

接口是功能的集合,就是方法的集合

接口中只能定义方法,不能定义普通的成员变量

而且接口中的成员方法,必须是抽象

接口是比抽象类还抽象的一种类型

接口不能创建对象

通常叫"父接口"

3.接口的定义

定义类用关键字:class

定义抽象类用关键字:abstract class

定义接口关键字:interface

定义枚举用关键字:enum

格式:

public interface 接口名字{

/成员变量,不能定义普通的成员变量

//成员方法:必须都是抽象的

public abstract 返回值类型 方法名();

}

4.各类型之间的关系

类和类之间:继承,而且是单继承,一个子类,只能有一个直接父类

接口和接口之间:继承,但是可以多继承,一个子接口,可以有多个直接父接口

类和接口之间:不叫继承(extends),叫实现(implements)

只有类实现接口

实现implements和继承差不多,实现是把接口中的抽象方法都拿过来

面试题:java到底支不支持多继承?

如果是类与类,不支持多继承,只支持多层继承

如果是接口和接口,支持多继承,也支持多层继承

5.接口中成员的特点

5.1成员变量(可以定义),但必须有固定的修饰符public static final 数据类型 变量 = 值,固定修饰符可以不写,不写编译器自动添加

5.2成员方法,必须是固定工就是福public abstract 即抽象方法

5.3接口不可以创建对象(抽象类也是)

5.4实现类去实现类接口,它必须重写接口中所有的抽象方法,然后才能创建对象,否则这个实现类还是一个抽象类,是不能创建对象的

在开发中最常用的模式:

一个类继承一个抽象类,同时实现多个接口

public class A extends AbstractClasB implments 接口A,接口B{

//注意:

A中必须重写抽象类中的抽象方法,以及所有接口中的抽象方法

}


接口和抽象类的异同

1.相同点:

a.都不能创建对象

b.都是做为父类/父接口

c.子类/实现类/都必须重写抽象方法,然后才能创建对象

2.不同点:

a.抽象类用关键字abstract 接口用关键字interface

b.抽象类中可以有抽象方法,可以没有抽象方法,也可以有部分是抽象方法,部分不是抽象方法

接口中只要有方法,必须都是抽象的

c.抽象类型可以定义任意成员变量 接口的成员变量必须是public static final 修饰

d.类和抽象类之间的关系是单继承,类和接口之间关系是多实现

e.思想上的区别:

_1.抽象类中必须定义整个继承体系的共性内容

_2.接口类中定义整个体系之外的扩的功能


面向对象的三大特点:封装(安全性)/继承(扩展性)/多态(灵活性)

多态:

多态是对象的多态

_一个对象的多种状态

_比如:你在学校是学生,在家是儿女,在公司是员工

在java中的多态

前提:

_1.必须有字符关系(必须有继承)

_2.必须有方法的重写

多态在java中的表现形式:(两种格式)

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

_2.接口类型 变量名 = new 实现类();

注意事项:

使用多态调用成员变量

_编译/运行都看左边的父类

使用多态调用成员方法

_编译时 看左边 父类

_运行是 看右边 子类

多态的弊端:

_多态只能调用子父类共有的方法

_不能调用子类特有的方法

弊端的解决方案:

_向下转型:多态,强制类型转换 int a = (int)3.14;

_向上转型:自动类型转换 double d = 10;

__Animal an = new Dog();

向下转型的弊端:

_把父类的变量转成子类类型的时候编译器直接编译通过

java中解决向下转型弊端的方法:

_一个关键字instanceof 运算符

_作用:判断某一个变量 不是 该类的类型

_格式:boolean b = an instanceof 类名

//使用instanceof运算符进行判断
        boolean b =an instanceof Dog;
        if(b){
            Dog d  = (Dog)an;
            d.lookHome();
        }

多态的好处:

提高了程序的灵活性

_父类类型的变量,可以接收任何一个子类的对象

_调用方法的时候,编译时看父类,运行时传递过来的子类对象中的方法


设计模式是什么(35种)

可以理解为规则,是共同制定用于解决问题的方案,总结的一个套路

1.代理设计模式

_1.1静态代理设计模式

_1.2动态

posted @ 2022-03-06 01:34  千寻简  阅读(22)  评论(0编辑  收藏  举报