3. Java面向对象编程


类与对象[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网课

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容

  • 面向对象笔记 一、 对象在内存中的存放方法以及被调用过程 class文件首先被加载到方法区中的class文件内容区...
    VictorBXv阅读 464评论 0 2
  • 1 面向对象No6 面向对象 OO Object Oriented 编程时以对象为单元,封装数据和逻辑,以此提...
    征程_Journey阅读 1,141评论 0 2
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 1,201评论 0 5
  • Java OOP 什么是面向对象思想? 把一组数据和处理他们的方法组成对象(object),把相同行为的对象归纳为...
    chonglingliu阅读 779评论 0 1
  • 晚上两个舅娘到我家住,说了很多我外婆的是非,她们把很多责任都算到外婆身上,外公在生病的时候,也没有好好照顾好他,乱...
    何德胜觉悟阅读 114评论 9 3