封装(Encapsulation):
是一种将抽象性函式接口的实现细节包装、隐藏起来的方法。
特点
- 减少耦合
- 类的内部结构可以自由修改
- 隐藏信息,实现细节
实现步骤
1、修改属性的可见性,限制对属性的访问
2、对属性提供对外公共方法的访问,创建一对赋值取值的方法,访问私有属性
eg.:
public class Person{
private String name;
private int age;
public int getAge(){
return age;
}
public String getName(){
return name;
}
public void setAge(int _age){
this.age = _age;
}
public void setName(String _name){
this.name = _name;
}
}
继承(Inheritance)
是子类继承父类的特征和方法,使子类具有父类的实例域和方法,使得子类具有父类相同的行为。
特性
- 提高代码复用性
- 子类可以对父类进行扩展
- 单继承,只能继承一个父类
- 提高了类之间的耦合性
关键字
- super:引用当前对象的父类
- this:指向自己的引用
- final:声明类为不可继承的,最终类,或最终方法
eg.:
class Animal{
public void eat(){
System.out.println("动物具有吃的能力!")
}
}
final class Cat extends Animal{}//最终类,不可继承
class Dog extends Animal{
//最终方法,不可继承
public final void eat(){
System.out.println("狗是吃肉的!")
}
}
多态(Polymorphism)
同一个行为具有多个不同表现形式或形态的能力,就是同一个接口,使用不同实例而执行不同操作。
1、引用多态
- 父类的引用可以指向本类的对象
- 父类的引用可以指向子类的对象
2、方法多态
- 创建本类对象时,调用本类的方法
- 创建子类对象时,调用子类重写或继承的方法
实现方式
- 重写
- 接口
- 抽象类和抽象方法
eg.:
public class Test{
public static void main(String[] args){
Animal obj1 = new Animal()://父类的引用指向本类对象
Animal obj2 = new Dog();//父类的引用指向子类对象
//Dog obj3 = new Animal();子类的引用不能指向父类的对象
//调用本类方法
obj1.eat(); //动物具有吃的能力!
//调用子类重写方法
obj2.eat(); //狗是吃肉的!
}
}
引用类型转换
1、向上类型转换(隐式/自动类型转换):小类型转大类型型,无风险
2、向下类型转换(强制类型转换):大类型转小类型,有风险(丢失精度)
3、instanceof运算符,解决引用对象类型,避免类型装换的风险
eg.:
public class Test{
public static void main(String[] args){
Dog dog = new Dog();
Animal animal = dog; //向上类型转换,自动转换
Dog dog = (Dog)animal;//强制类型装换
if(animal instanceof Cat){
Cat cat = (Dog)animal;//类型不同,无法进行转换
}else{
System.out.println(”无法进行类型装换“);
}
}
}
参考资料:https://www.imooc.com/learn/124