一、封装
(一)基本概念
封装即把信息隐藏,把信息包装成一个整体,用整体的眼光看待问题
(二)四种访问控制级别
- public:项目中所有类都可以访问
- protected : 子类下可以访问,同包(除了不同包且不同子类,其他情况都能访问)
- 缺省/默认 : 同包
- private : 同类
(三)作用
1.良好的封装能够减少耦合,调用者只需根据暴露在外的方法修改属性的值,在set方法时还可以添加一些范围的校验
2.易于维护,因为封装后就是内部结构,没有暴露在外部,可以自由修改,灵活控制读和写的访问级别
3.隐藏实现细节,隐藏信息,提高代码的安全性
(四)使用方法
创建一个类,将属性的访问级别设置为私有(private),把对外界提供设置属性的方法设置为public。
快速设置Set和Get方法,和构造方法,IDEA的快捷键为 Alt+Insert(台式机) Fn+Alt+Del/Ins(笔记本,我的是这样)
扩展:当使用Maven创建项目时,编写我们的实体类可以使用IDEA的Lombok插件(也就是小辣椒),在Maven中导入依赖,之后在实体类中加入@DATA注解,就可以直接使用Set与Get方法。
二、继承
(一)基本概念
让某个类型的对象获得另一个类型的对象的属性和方法。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
(二)作用
简化代码,提高代码的重用性,便于功能的拓展。
(三)注意事项
1.在Java中一个子类只能继承一个父类,如果想要实现多继承,可以使用多级继承。
2.因为所有的类最终的父辈类都是Objcet类,所以所有类都能使用其Objcet类中声明的方法和属性。
3.子类创建对象时,会先初始化父类属性,然后执行父类的构造方法,再初始化子类的属性,最后才执行子类的无参构造(多级继承时以此类推)
(四)使用方式
关键字 extends
super.属性可以访问父类的属性
继承后子类可以对父类的方法进行重写,但不能重写父类的构造方法,只能通过super()的方式调用父类的构造方法,且必须放在第一行才行。
子类对象调用重写方法时会遵循“就近原则”的方式
三、多态
(一)基本概念
在这个运行环境中,引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定。Java虚拟机会根据引用变量指向的对象来调用该对象的指定方法,这种运行机制被称为动态绑定。
(二)作用
多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。
(三)多态的使用
多态存在的条件:
1.继承
2.重写
3.父类引用指向子类对象。
public class extend {
public static void main(String[] args) {
Animal a = new Dog();
Animal b = new Cat();
a.say();
b.say();
}
}
abstract class Animal {
abstract void say();
}
//猫
class Cat extends Animal{
public String name="小黑";
public void say(){
System.out.println("喵喵喵");
}
}
//狗
class Dog extends Animal{
public String name="小白";
public void say(){
System.out.println("汪汪汪");
}
}
输出结果为:
汪汪汪
喵喵喵