封装、继承、多态
封装
-
该露的露,该藏的藏
-
程序要求“高内聚,低耦合”,高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。
-
-
封装(数据的隐藏)
-
通常,应禁止直接访问一个对象中数据的实际表现,而应通过操作接口来访问,这称为信息隐藏。
-
-
属性私有,get/set
封装的意义:
-
提高程序的安全性,保护数据
-
隐藏代码的实现细节
-
统一接口
-
系统的可维护性增加了
继承
-
继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模
-
extends的意思是“扩展”。子类是父类的扩展
-
JAVA中类只有单继承,没有多继承;一个儿子只能有一个父亲,一个父亲可以有多个儿子
-
继承是类和类之间的一种关系,除此之外,类和类之间的关系还有依赖、组合、聚合等
-
继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,用关键词extends来表示
-
子类和父类之间,从意义上讲应该具有“is a”的关系。
子类继承了父类,就会拥有父类的全部方法
私有的东西无法被继承
-
object类
-
super 调用父类的构造器必须要在子类构造器的第一行
-
-
方法重写
多态
动态编译:类型:-可扩展性
同一个方法可以根据发送对象的不同而采用多种不同的行为方式
一个对象的类型是确定的,但可以指向对象的引用的类型有很多(父类,有关系的类)
多态存在的条件:
-
有继承关系
-
子类重写父类方法
-
父类引用指向子类对象
注意:多态是方法的多态,属性没有多态性
instanceof 类型转换 引用类型,判断一个对象是什么类型
-
父类引用指向子类的对象
把子类转换为父类:向上转型
把父类转换为子类:向下转型,强制转换
方便方法的调用,减少重复的代码,简洁
static关键字
{
//代码块(匿名代码块)赋初值
System.out.println("匿名代码块");
}
static{
//静态代码块,只执行一次
System.out.println("静态代码块");
}
public Person(){
System.out.println("构造方法");
}
运行结果:
静态代码块
匿名代码块
构造方法
静态>匿名>构造方法
静态代码块之执行一次
抽象类
不能new这个抽象类,只能靠子类去实现它:约束!
抽象类中可以写普通方法
抽象方法必须卸载抽象类中
抽象的抽象:约束
//思考题?
//存在构造器吗?
//存在的意义? 提高开发效率
接口
普通类:只有具体的实现
抽象类:具体实现和规范(抽象方法)否有!
接口:只有规范!自己无法写方法~专业的约束!约束和实现分离:面向接口编程~
接口的本质是契约
声明类的关键字是class,声明接口的关键在是interface
接口是面向的精髓,是对对象的抽象
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性