美文网首页
3. Java面向对象编程

3. Java面向对象编程

作者: Lynn_4f26 | 来源:发表于2018-12-15 03:08 被阅读0次

    类与对象[1]

    • Java是面向对象的
      • 汇编语言(面向机器)—— c语言(面向过程)—— java语言(面向对象)
    • 类和对象的关系
      • 类是抽象的,代表一类事物,比如人类,猫类...
      • 对象是具体的,代表一个具体事物
        类是对象的模板,对象是类的一个个体,实例
        A[把猫的特征提取出来] --> B[猫类]
        B --> C[对象/实例]
        B --> D[对象/实例]
        B --> E[...]
    

    定义类

    package包名;
    class类名 extends父类 implements接口名{
        成员变量;
        构造方法;
        成员方法;
    }
    

    成员变量

    成员变量是类的一个组成部分,一般是基本数据类型,也可是是引用类型

    创建对象

    • 先声明再创建
      • 对象申明:类名 对象名
      • 对象创建:对象名=new 类名()
    • 一步到位法
      • 对象名=new 类名()

    访问对象的成员变量

    对象名.变量名;
    

    成员方法

    • 介绍
      • 比如人类,除了有一些属性外(成员变量表示的 年龄,姓名...),还有一些行为,如说话,跑步...,通过学习还会做算术题
    • 成员方法/函数--定义
      • 参数列表:表示成员函数输入
      • 数据类型(返回类型):表示成员函数输出
      • 函数主体:表示为了实现某一功能代码块
    public 返回数据类型 方法名(参数列表)
    {
          语句;//方法(函数)主体
    }
    
    • 成员方法--申明
    public       int         test(int a);
    //访问修饰符  数据类型  函数名(参数列表);
    

    构造方法

    • 特点
      • 方法名和类名相同
      • 没有返回值
      • 创建一个类的新对象时,系统会自动调用该类的构造方法,完成对新对象的初始化
      • 一个类可以有多个构造方法
    • 默认构造方法
      • 如果没写,系统默认 public Person(){}
    • This
      • this是属于对象的,不是属于类的

    静态变量与静态方法

    静态变量

    • 定义语法
    访问修饰符 static 数据类型 变量名;
    //static表示静态变量,因此它可以被任何一个对象访问 
    

    2)访问类变量

    类名.类变量名
    //或者
    对象名.类变量名
    

    静态方法

    • 定义语法:
    访问修饰符 static 数据返回类型 方法名(){}
    
    • 访问类方法:
    类名.类方法名
    //或者
    对象名.类方法名
    
    • java规则:
      • 静态变量原则上用静态方法去访问
      • 静态方法只能访问静态变量
      • 非静态方法,既能访问静态变量,也能访问实例变量
    • 总结:
      • 静态变量是与类相关的,公共的属性
      • 实例变量是属于每个对象个体的属性

    四大特征

    1. 抽象(可以不考虑)

    定义一个类时,将一类事物的共同属性和行为提取出来,形成一个物理模型,这种研究方法称为抽象

    2. 封装

    将抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法),才能对数据进行操作

    • 访问控制修饰符
      • 公开级别,public,对外公开
      • 受保护级别,protected,对子类和同一个包中的类公开
      • 默认级别,无修饰符,向同一个包的类公开
      • 私有级别,private,只有类本身可以访问,不对外公开
    访问级别 访问控制修饰符 同类 同包 子类 不同包
    公开 public
    受保护 protected
    默认
    私有 private
      • 三大作用
        • 区分相同名字的类
        • 管理类
        • 控制访问范围
      • 打包命令
        • package com.xiaoming
        • 命名规范: 小写字母

    3. 继承

    解决代码复用:在父类中定义相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需通过extends语句来声明继承
    class 子类 extends父类
    这样子类就会自动拥有父类定义的部分属性和方法

    • 注意事项
      • 除了 private属性/方法,其他3类的属性/方法都能被继承
      • 一个子类只能继承一个父类
      • Java所有类都是object的子类
      • JDK6中有202个包,3777个类、借口、异常、枚举、注释和错误
      • 多查jdk帮助文档
    • 方法重载(overload)
      • 方法名相同
      • 方法的参数类型,个数,顺序至少有一项不同
      • 如果只是返回类型不同,不能构成重载
      • 如果只是控制访问修饰符号不一样,不能构成重载.
    • 方法覆盖(override)
      • 子类的有一个方法,和父类的某个方法的名称、返回类型、参数一样,则称子类的这个方法覆盖了父类的那个方法
      • 访问权限只能:子类>=父类

    4. 多态

    一个引用(类型)在不同情况下的多种状态。
    继承是多态得以实现的基础

    • 注意事项
      • Java允许父类的引用变量引用它子类的实例(对象) Animal animal=new Cat(); 这种转换时自动完成的
      • 好处:消除了类之间的耦合关系,使程序更容易扩展(见E:\Java\Homework\接口_卖汽车.txt)
        • 新增一种类型汽车的销售,只需让新定义的类实现Car并实现它的所有方法,无需对原有代码做任何修改。CarShop类的sellCar(Car car)方法可以自动处理新的车型

    抽象类

    当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]

    • 注意事项
      • 抽象类不能被实例化
      • 抽象类不一定要包含abstract方法,即可以有实现了的方法
      • 一旦某个类包含了abstract方法,这个类必须声明为abstract
      • 抽象方法不能有主体:abstract void aaa( );

    接口

    接口就是给出一些没有内容的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来

    Class 类名 implements 接口
    {
          方法;
          变量;
    }
    
    • 注意事项
      • 接口不能被实例化
      • 接口中的所有方法都不能有主体(可以理解为:接口是更抽象的抽象类) void aaa();
      • 一个类可以实现多个接口
      • 接口中可以有变量(但变量不能用private和protected修饰)
        • 接口中的变量,本质是static,而且是final,不管你加不加static修饰
        • 在java开发中,我们经常把常用的变量,定义在接口中,作为全局变量使用。访问形式:接口名.变量名
        • 一个接口不能继承其他的类,但是可以继承别的接口
    • 实现接口vs 继承类
      • 单继承:保证类的纯洁性
        • 实现接口可以看作是对继承的一种补充
      • 继承是层级式,不灵活
        • 实现接口可以对某个类功能扩展,非常灵活

    绑定

    将一个方法调用同这个方法所属的主体(也就是对象或类)关联起来叫做绑定,分前期绑定和后期绑定

    • 前期绑定
      • 在程序运行之前就已经绑定,由编译器和连接程序实现,又叫做静态绑定。比如static方法和final方法。注意!这里也包括private方法。因为它是隐式final的
    • 后期绑定
      • 在运行时根据对象的类型进行绑定,由方法调用机制实现,因此又叫做动态绑定,或者运行时绑定。

    final

    • 作用:final可以修饰变量或者方法
      • 当不希望父类的某个方法被子类覆盖(override)时,可以用那个final关键字来修饰(见com.test2.Demo5.java)
      • 当不希望类的某个变量的值被修改,也可用final修饰。如果一个变量是final的,则必须赋初值
      • 当不希望类被继承时,可用final修饰
    • 规范:fianl用下划线命名
    • 注意事项
      • final修饰的变量又叫常量。一般用xx_xx_xx来命名
      • 如果一个变量是final的,则必须赋初值

    1. 持续更新中~笔记记录自韩顺平Java网课

    相关文章

      网友评论

          本文标题:3. Java面向对象编程

          本文链接:https://www.haomeiwen.com/subject/sifwhqtx.html