java面向对象

类与对象、方法
OOP设计
对象:用来描述客观事物的一个实体,由一组属性和方法构成
属性:对象具有的各种特征
方法:对象的执行
类的产出:
从对象中归纳,抽象出类
根据对象抽象出类
类:具有相同属性和方法的一组属性和方法
面向对象设计提抽象的过程:
用类图描述设计
设计过程
1、发现类
2、发现类的属性
3、发现类的方法
4、优化设计
抽象的原则
1、系统所关注的属性
2、系统所关注的方法
封装
面向对象三大特征之一----------封装
封装的概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
分装的好处
1、隐藏类的实现细节
2、只能通过规定方法访问数据
3、方便加入控制语句
属性的封装之set\get方法
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
构造
初始化
缺省构造(无参构造)
方法重载
指同一个类中有多个方法
1、方法名相同 与返回值、访问修饰符无关
2、参数列表不同
优化设计:
分层开发:系统业务(功能),放置单独的组件中
面向对象的优点
1、把人类解决问题的思维过程转变为程序能够理解的过程
2、信息隐藏,提高了程序的可维护性和安全性
3、提高了程序的可重用性
继承、方法重写、多态
继承
定义一个父类将共有的属性与方法写进去
关键字: extends
只能继承一个父类
super :代表父类对象
访问父类的属性和方法
super.name;
super.print();
继承后的初始化顺序
父类属性--->父类构造方法--->子类属性--->子类构造方法
有些父类成员不能继承
1、子类不能访问父类private成员
2、子类与父类不在同包,使用默认访问权限的成员
3、构造方法

方法重写的规则
1、在继承关系的子类中
2、重写的方法名、参数、返回值类型必须与分类相同
3、私有方法不能继承因而也无法重写
何时使用继承
继承与真实世界类似
符合is-a关系的设计使用继承
继承是代码重用的一种方式
将子类都有的属性和行为放到父类中
抽象类:abstract
java中也使用抽象类,限制实例化
abstract也可以定义在方法中----抽象方法
public abstract void play(); //没有方法体
1、抽象方法没有方法体
2、抽象方法必须在抽象类
3、抽象方法必须在子类中被实现,除非子类是抽象类
final用法:
1、类不希望被继承
2、方法不希望被重写
3、属性值不希望被修改
static用法:静态常量
1、static可以用来修饰属性、方法、代码块
2、static修饰的属性和方法称为类属性(类变量)、类方法
3、父类和子类中都有static变量,初始化顺序:
1、父类静态变量
2、父类静态初始化块
3、子类静态变量
4、子类静态初始化块
5、子类main方法
6、父类变量
7、父类初始化块
8、父类构造器
9、子类变量
10、子类初始化块
11、子类构造器
特点:
静态方法不能调用非静态方法、非静态属性(两种解决方法:1、将非静态方法改成静态类2、实例化对象进行调用)
初始化块:运行在构造函数之前,用大括号,前提创建对象
静态初始化 块:static加大括号,类只要编译成功,即使不创建对象也可以运行
多态:
同一种事物,由于条件不同,产生的结果也不同
程序中的多态:同一种引用类型,实例不同,执行的结果不同
如何实现多态:
1、使用继承
2、子类重写父类的方法
3、父类引用子类
引用数据类型的转换
向上转型
父类引用子类
可见性:子类重写父类的方法
应用:多态
向下转型
强制类型转换,父类转换子类
应用:类型的还原
instanceof
1、判断一个对象是否属于一个类或者实现了一个接口
2、强制类型转换之前通过instanceof运算符检查对象的真实类型,可以避免类型转换异常,从而提高代码健壮性
多态的优点:
1、可替换性:多态对已存在的代码具有可替代性
2、可扩充性:多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。
3、接口性:多态是超类通过方法签名,向子类提供了一个共同接口,由子类完善或者覆盖它而实现的。
4、灵活性:它在应用中体现了灵活多样的操作,提高了使用效率
5、简化性:多态简化了对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。值得注意的是,多态并不能够解决提高执行速度的问题,因为它基于动态装载和地址引用,或称动态绑定。
接口:
1、理解什么是接口
2、运用接口优化程序
interface
默认公开的抽象方法
public abstract void demo();//public、abstract可以省略
特点:
1、接口不可以被实例化
2、实现类必须实现接口的所有方法,否则实现类必须是抽象类
3、实现类可以实现多个接口,来弥补Java的多个继承
4、接口中的变量都是静态常量
static final int I=9;//static、final默认省略
接口与继承 :先天具备的用继承、后天学习的使用接口
implements: 实现接口
接口是一种规范:
1、接口的名字,有些接口只有名字
2、接口的注释,方法的实现方式要通过注释来约定
面向接口编程:
程序设计时1、关心实现类有何能力不关心实现细节2、面向接口的约定而不考虑接口的具体实现
接口的优点
1、可以被多继承
2、设计和实现完全分分类
3、更自然的使用多态
4、更容易搭建程序框架
5、更容易更换实现
接口和继承的区别:
1、本质区别:关键字不同,抽象类是类,接口是规范
2、接口可继承接口,并可多继承接口,但类只能单根继承
3、接口只能做方法声明,抽象类可以做方法声明,也可以做方法实现
4、抽象类能够保证实现的层次关系,而接口则是能够更有效地分离行为与实现。
常量
1、 是一种标识符,它的值在运行期间恒定不变
2、标识符在程序中只能被引用,而不能被重新赋值
匿名类
作用:匿名类的目的是在某个地方需要特殊的实现,因此在该处编写其实现,并获取它的实例,调用它的方法。不要在匿名类编写其他的方法,是不可见的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值