(Java)面向对象的三大特征
封装、继承与多态
封装
封装的作用(好处)
- 提高程序安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 增加系统可维护性
属性私有(关键字private)
加上Private可使该属性私有于一个类,在其他地方new此类后不可通过'.'访问私有属性
get,set
用于操作私有属性
e.g.
//get获取这个数据
public String getName(){
return this.name;
}
//set给这个数据设置值
public void setName(String name){
this.name = name;
}
快捷键:alt+insert可以直接生成get、set
继承(关键字extends)
-
继承是类和类之间的关系
-
只有单继承没有多继承(不可同时继承多个类)
-
private不可继承,但可以用get、set进行操作
-
一般继承的都是public
-
继承是扩展的意思
-
子类是父类的拓展
-
可以看作是树
e.g.
//父类
public class Person{
}
//派生类(子类)
public class Student extends Person{
}
//派生类(子类)
public class Teacher extends Person{
}
Ctrl+H为打开继承树的快捷键
Object是所有类都默认直接或间接继承的类
super、this
super.属性 表示父类里的属性
this.属性 表示此类里的属性
- 子类中默认隐藏代码:调用父类的无参构造
- 调用父类构造器必须在字类构造器的第一行
- super只能在子类的方法或构造方法中
- super和this不能同时调用构造方法、
方法重写
- 重写都是方法的重写,与属性无关
- 父类的引用指向子类
- 静态方法的调用只和左边定义的数据类型有关
e.g.
//父类
public class Person{
public static void test(){
Sytem.out.println("P->test");
}
}
//派生类(子类)
public class Student extends Person{
public static void test(){
Sytem.out.println("S->test");
}
}
Person p = new Student();
p.test();//调用了Person中的test
Student s = new Student();
s.test();//调用了Student中的test
-
Override 重写
- 快捷键Alt+Insert
- 只和非静态方法有关
- 重写后调用方法会执行重写后方法
- 重写对象关键字public
- 子类重写父类的方法
- 为什么重写
- 父类的功能子类不一定满足
-
注:
- 方法名必须相同,方法体不同
- 参数列表必须相同
- 修饰符范围可以扩大但不能被缩小 public>Protected>Default>private
- 抛出的异常可以缩小但不能扩大
- static,final,private 方法不可重写
多态
-
多态是方法的多态而不是属性的
-
一个类能调用的都是自己的或从父类继承的
-
父类和子类要有联系否则类型转换异常
-
存在条件:继承关系,方法需要重写,父类引用指向子类对象 e.g.
Father f1 = new Son();
Sytem.out.println(X instanceof Y);//检测是否编译可通过(是否有父子关系)通过为true,不通过为false
-
类型转化
-
低转高可以直接转
Person p = new Student();
- 高转低强制转换
Student student = (Student) p;
或者
((Student) p).子类方法;
直接用子类方法
- 子类转换为父类可能丢失自己本来的方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了