封装,继承和多态
1.封装:
属性私有,get/set
记住快捷键alt+insert
2,继承
extends
继承是类和类之间的关系,除此之外,类和类之间的关系还有依赖,组合,聚合等
继承关系的两个类,子类(派生类)---父类(基类)
快捷键:IDEA中父类窗口上ctrl+H,可以打开继承树
object类
JAVA中,所有的类都默认继承object类
JAVA中只有单继承,没有多继承,一个爸爸可以生多个儿子,一个儿子没有几个爸爸。
构造方法
this():本类的构造
super():父类的构造
重写 :Alt+insert 选中override
- 1.方法名必须相同
- 2.参数列表必须相同
- 3.修饰符:范围可以扩大,但不能缩小:public>protected>default>private
- 4.抛出的异常:范围可以被缩小,但不能扩大 ClassNotFoundException->Exception (大)
静态方法:方法的调用只和左边定义的数据类型有关
非静态方法:重写的方法关键词只能是public
3. 多态
- 动态编译:类型:可扩展性更强
- 即同一个方法可以根据发送对象的不同二采用多种不同的行为方式。
- 一个对象的实际类型是确定的,但可以指向对象引用的类型有很多
- 多态存在的条件
- 有继承关系
- 子类重写父类的方法
- 父类引用指向子类的对象,子类的引用不能指向父类的对象
- 注意:多态是方法的多态,属性没有多态。
- 不能被重写的方法
- static 方法,属于类,不属于实例
- final 常量
- private 方法;
-
-
12345
public
class
Person {
public
void
run(){
System.out.println(
"run"
);
}
}
123456789public
class
Student
extends
Person {
@Override
public
void
run() {
System.out.println(
"Son run"
);
}
public
void
eat(){
System.out.println(
"eat"
);
}
}
1234567891011121314151617public
class
Application {
//多态测试
public
static
void
main(String[] args) {
//一个对象的实际类型是确定的
//new Student();
// new Person();
//可以指向的引用类型不确定了
Student s1=
new
Student();
Person s2=
new
Student();
//父类的引用指向子类的类型
Object s3=
new
Student();
//对象能执行哪些方法,主要看对象左边的类型,和右边关系不大 s2.run();
s1.run();
s1.eat();
}
}
-
-
把父类转化为子类,向下转化,强制转换
抽象:封装、继承、多态
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」