面向过程与面向对象
类与对象的关系
属性,方法和构造方法
方法的重载
封装
**应用程序?**现实的虚拟
写程序?使用计算机语言去描述现实中的事物
面向过程?
描述一个事物的时候关注的是事情发展的步骤,流程
斗地主:洗牌 发牌 抢地主 出牌 结算
xipai() fapai() qiangdizhu() chupai() jiesuan()
main(){
xipai();
fapai();
qiangdizhu();
chupai();
jiesuan();
}
面向对象?
描述一个事物的时候关注的是事情中相关的人物
斗地主:
荷官 洗牌 发牌 结算
xipai() fapai() jiesuan()
玩家 抢地主 出牌
qiangdizhu() chupai()
牌
main(){
荷官.xipai();
荷官.fapai();
玩家.qiangdizhu();
玩家.chupai();
荷官.jiesuan();
}
对象:做事情的人或者物,是一个具体的个体
类: 表示的是对象共同特征的描述,是一个抽象的概念
类型 对象
学生 朱坤
电脑 某一台电脑
桌子 某一张桌子
类是对象的抽象
对象是类的具体表现
学生类
定义类
创建对象
调用属性和发
构造方法
每个类都默认隐式声明了一个无参数的构造方法
构造方法的特点
a.构造方法的名字必须和类名一致
b.构造方法不需要声明返回值类型
c.构造方法不能被重写[覆盖]
d.构造方法要通过new关键字调用
构造方法的重载
在一个类中可以定义多个构造方法,只要参数列表[类型,个数,顺序]不一样
方法的重载
在同一个类中定义多个同名不同参数列表的方法
方法的重载和返回值没有关系
封装:
使用访问限定符来限定类,属性,方法和构造方法的可访问范围
为什么需要封装??
对于属性的访问,可以有写访问和读访问
通过访问限定符限定属性的可访问访问
再通过setter和getter方法来对外提供访问接口
提高数据的安全性
封装的级别
public 公共的 程序中随处可访问
protected 受保护的 包内和子类中可访问
缺省的 包内可访问
private 本类中可访问
======================================================
Java中的数据类型
基本类型
整型:byte short int long
浮点型:float double
非数字:char boolean
引用类型
数组
类 [抽象类]
类和抽象类,接口
1.关键字不一样 抽象类abstract class 接口是interface
2.抽象类中的属性可以是成员属性,也可以是类属性
接口中的属性必须是公共的常量
3.抽象类中的方法可以是具体的方法,也可以是抽象方法
接口中的方法只能是抽象方法,或者是default方法[1.8及以上]
4.抽象类有构造方法,接口没有构造方法
5.一个类只能继承一个抽象类
一个类可以实现多个接口
=========================================================
为什么需要接口??
类中的方法全部是具体的方法
抽象类中的方法可以是具体的方法,也可以是抽象方法
接口中的方法全部是抽象方法
Eclipse中的工程结构:
工作空间[WorkSpace]
工程[Project]
src
软件包[package]
类/接口[class/interface]的源代码
bin
软件包[package]
类/接口[class/interface]的字节码
Idea中的工程结构
工程[Project],创建工程的时候指定路径
模块[Module]
src
软件包[package]
类/接口[class/interface]的源代码
模块[Module]
src
软件包[package]
类/接口[class/interface]的源代码
out
production
模块
软件包[package]
类/接口[class/interface]的字节码
模块
软件包[package]
类/接口[class/interface]的字节码
=========================================================
如何继承?
public class A{}
public class B extends A{}
为什么需要继承?
a.子类可以继承到父类中的属性和方法,减少代码的冗余
b.子类可以定义自己特有的属性和方法,实现对父类的扩展
子类特有的方法必须是子类类型的对象才能调用
c.子类还可以修改【覆盖、重写】从父类继承来的属性和方法
对象调用的是不是重写的方法,取决于new的类型