美文网首页
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网课

相关文章

  • python-day14

    一、面向对象编程 编程思想:1.面向对象编程 --> 算法,逻辑2.函数式编程 --> 函数3.面向对象编程 ...

  • 整理java(1)

    首先java是面向对象编程语言(oop:Object Oriented Programming 面向对象编程)...

  • 3. Java面向对象编程

    类与对象[1] Java是面向对象的汇编语言(面向机器)—— c语言(面向过程)—— java语言(面向对象) 类...

  • 面向对象编程,类和对象

    面向对象编程 Java是面向对象的一门编程语言,所以余姚使用者具备面向对象编程的思想。 那么,什么是面向对象编程呢...

  • 类与对象(1) - Class、Object

    面向对象编程思想 Java开发是利用 面向对象 的思想实现 面向过程 的开发。 面向对象编程(OOP:Object...

  • 【Java 8】二、Java中的面向对象编程

    2.1 面向对象编程 面向对象编程(Object-Oriented Programming,OOP)在Java中处...

  • 2018-10-17类和对象

    1⃣️面向对象编程 编程思想:1.面向过程编程 ---> 算法、逻辑2.函数式编程 --> 函数3.面向对象编...

  • 阶段 1:Java语言基础

    一. Java 编程入门 二. Java面向对象编程 三. Java语言高级特性

  • Spring系列:Spring框架为我们提供了哪些编程模式,都了

    面向对象编程 java语言本身就支持面向对象语言的编程特性,Spring在此基础进行了丰富和扩展,让面向对象编程更...

  • java总结

    Java是一门面向对象编程语言. java知识点梳理 java面向对象的特点java面向对象的三个基本特性: 封...

网友评论

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

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