为了账号安全,请及时绑定邮箱和手机立即绑定

面向对象

标签:
Java

面向对象语言是基于面向过程的!
面向过程:代表:C语言

    从始至终,都是一个执行者    给一个需求:举例:获取数组中的最大值        1)定义数组        2)定义获取最大值的方法        3)在main方法中来调用哪个方法    从分析,到一步一地操作,都是一种执行者!

面试题:
面向对象思想的特点:      千万不要说:万物皆对象!

    1)更符合我们的生活的一种行为思想习惯    2)将复杂的事情,简单化    3)让我们从执行者变成指挥者

面向对象设计原则:
就是不断创建对象,使用对象,指挥对象做事情

面向对象的三个特征:
封装:
继承
多态          
类和对象的关系
类是描述现实世界的事物
学生---->学生事物                         ---->学生类:Student
属性:姓名,年龄,性别,学号              
成员变量:在类中方法外
行为:主要工作学习                      
成员方法:去掉static

    创建对象的方式:            格式:                    类名  对象名 = new 类名() ;                    对象名.成员变量;                    对象名.成员方法();

代码块:
在Java语言,用{}括起来的内容,简称为代码块!
代码块的分类:
局部代码块
书写的位置,是在方法中定义的{代码...}
作用:限定变量的生命周期的
构造代码块
在类的成员位置,每次在执行构造方法之前,如果当前类中有构造代码块,优先执行构造代码块,在执行构造方法
作用:如果多个类的构造方法中有共有的内容,可以将抽取到构造代码块中
静态代码块
在类的成员位置,在{} 外面被static,静态代码块
优先于对象存在!
静态代码块只执行一次,优先执行    
类的成员:
1)成员变量
2)构造方法: 无参构造方法/有参构造方法
3)成员方法

    成员方法分类        是否有返回值                有返回值类型的方法                没有返回值类型的方法,void方法             是否有参数进行划分                有参数的方法                无参数的方法

如何使用文档说明书?
进入jdk文档之后  
点击显示--->索引---->查询哪个类  比如Scanner

    找到官方提供的类    需要观察什么?        1)该类中有没有字段        2)看当前类中有没有构造方法(一旦有构造方法,那说明可以通过这些构造方法创建该类对象)        3)有没有成员方法    Java高级部分: 都借助于文档说明书            JDK API(Application Programming Interface)            IO流            网络编程            集合            反射    观察他的Jdk的版本号,在看它一简单介绍...

static的特点:
随着类的加载而加载(static跟类有关系)
1)被static修身的变量/方法,它都是优先于对象存在
2)static可以被多个对象共享
举例:
我们Java班共享一个班级号

            饮水机:被共享            水杯的水(不能被共享)    3)被static修身的变量/方法,可以类名直接调用    static关键字 注意事项:                    静态只能访问静态

static关键字的注意:
1)在静态方法中,是没有this关键字
被静态修饰的是随着类的加载而加载,this随着对象的创建而存在
静态优先于对象存在!
被静态修饰的内容一般称为:类成员
2)访问的问题
在静态方法中,
针对成员变量:只能访问静态的成员变量
针对成员方法:只能访问静态的成员方法
在非静态方法中
成员变量:既可以访问静态成员变量,也可以访问非静态的成员变量
成员方法:既可以访问静态的成员方法,也可以访问非静态的成员方法
继承:将一些类共性内容抽取出来,封装到一个独立的类中,并且让这个独立的类和这些类产生一种关系,叫做继承!
将上述代码改进:使用继承
抽象类:
比如动物吃的功能,每个具体的动物吃的功能不一样,在当前类中只是给出一个方法声明(抽象的,不带方法体)
在一个类中,给出一个抽象功能,就必须将这个类定义为抽象类!
抽象类的格式
abstract class 父类名(Animal){
}
抽象方法的格式:
public abstract(必须写)  方法名() ;  //抽象方法

注意:
1)如果一个类中有抽象方法,那么这个类一定抽象类
2)抽象类中一定有抽象方法吗? 还可以非抽象的

抽象类的特点:
1)抽象类不能直接实例化(不能直接创建对象)
2)子类必须重写父类的抽象功能
抽象类的子类:
1)抽象类的子类如果是抽象类呢? 没有任何意义,因为使用的就是通过具体类创建对象,具体类都抽象类,没意义!

    2)子类是具体类的话,对象的创建工作,由子类完成--->父类名  对象名 = new 子类名() ; 抽象类多态

实际工作中:
1)接口多态(用的最多)
2)抽象类多态
3)具体类对象的创建  
抽象类成员的特点:
成员变量:
可以是变量,也可以是一个常量(自定义常量)
构造方法:
所有的构造方法都是给对象进行初始话:1)默认初始化 2)显示初始化
成员方法:
可以是抽象的方法,也可以非抽象的方法  
多态:某个事物在不同时刻体现出来的不同状态!
水:      事物
液态  气态   固态

    猫狗案例:        创建一个猫类的对象           右-->左        Cat cat = new Cat() ; //猫是猫        Animal a = new Cat() ;//也是另外一种方式:猫是动物

多态的前提条件:
1)必须有继承关系
2)必须方法重写
猫狗案例:每个动物具体的吃的功能是不一样,必须有方法重写,将父类的功能覆盖掉!
3)必须有父类引用指向子类对象     :向上转型
格式:
父类名  对象名  = new 子类名() ;

多态中的成员访问特点
1)成员变量的访问特点:
编译看左,运行看左   (左:父类)
2)成员方法(一般没有强调静态方法都是非静态的)的访问特点:
编译看左,运行看右
3)构造方法:作用:就是给对象进行初始化的
4)静态的成员方法的访问特点:
编译看左,运行看左(静态的成员方法算不上方法重写,因为静态的都和类有直接关系!)
多态的好处:
1)提高代码的扩展性(由多态保证)
2)提高代码的维护性(由继承关系)
多态的弊端:
不能访问子类特有功能
多态的弊端:
最优秀的方式:使用向下转型:将父类对象强制转换为子类的引用
格式:
子类名  子类对象名 = (子类名)父类的对象;

注意:
向下转型使用不当的时候,会出现一个异常:ClassCastExceptino:类转换异常
类的初始化
继承过程中,分层初始化;首先父类初始化,然后是子类
创建一个类的对象的时候,是通过构造方法创建对象,构造方法的作用:给对象进行初始化话的
继承中的成员方法访问特点:
子类继承父类,当成员方法名称不一致的时候,分别调用
当成员方法名称一致的情况,首先在子类中有么有该方法,如果有,就调用;如果没有,就调用父类的成员方法;
法重写:override:继承里面的技术
当子类出现了和父类一模一样的方法的时候,子类的方法会重写(覆盖,复写)父类的方法,调用的子类的功能
方法重载:overload:方法里面的
在方法中,多个方法名相同,并且他的参数列表不同,与返回值无关
参数列表不同:
1)参数个数不同
2)参数类型不同
接口:(开发过程中要遵循面向接口编程!)
将一些额外(扩展)功能,暴露出来,只要哪些类实现了这个接口,就一定要取实现接口中的功能!

格式:    interface 接口名{    }

接口的实现类和接口之间是一种实现关系
class 类名  implements(实现) 接口名{

    }

接口的子实现类:
1)如果接口的实现类是一个抽象类;没有意义,接口本身不能实例化,需要通过子实现类来进行实例化,如果子实现类
都被抽象了,不能创建对象了,这种没意义!
2)接口的实现类是具体类,接口名 对象名 = new 子实现类名() ; 接口多态(推荐方式:开发中这种方式最多)

接口不能实例化(不能创建对象)

实际开发中命名规则:
实现类命名规则:接口名+impl :实现类
接口的成员特点:
成员变量:
存在默认的修饰符:   public static finla
构造方法:接口中没有构造方法
成员方法:
默认的修饰符:public abstract
关系的区别:
类与类的关系
extends:继承关系     单继承,不能多继承,但是可以多层继承
类与接口的关系:implements :实现关系 ,并且一个类继承另一个类的同时还能实现多个接口

接口与接口的关系:        extends关系:可以是单继承,可以是多继承的!

任何类都需要继承自Object类,代表所有类的根类.
形式参数问题
基本数据类型(不做研究,比较简单)
引用类型
(具体)类 :需要该具体类对象
抽象类的情况:形参是一个抽象类,那么实际需要该抽象类子类对象  (抽象类多态)
@author Administrator

多态:  Fu f = new Zi() ;

    abstract  class Fu类:抽象类    Fu f = new Zi() ;抽象类多态

方法返回值的情况:
1)返回基本类型  :比较简单  (返回什么基本类型数据,用什么基本类型接收)  
String(特殊的引用类型)
2)引用类型:
(具体)类:需要返回的是该具体类 具体对象(或者匿名对象)
抽象类:需要返回的是该抽象类的子类对象
形式参数问题
基本数据类型(不做研究,比较简单)
引用类型
(具体)类 :需要该具体类对象
抽象类
接口
方法返回值的情况:
1)返回基本类型  :比较简单  (返回什么基本类型数据,用什么基本类型接收)  
String(特殊的引用类型)
2)引用类型:
(具体)类:需要该具体类 具体对象(或者匿名对象)
方法的形式参数
接口类型:需要该接口的子实现类的对象
方法的返回值

    接口类型:返回值是一个接口类型,返回的时候,需要该接口的子实现类对象

点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消