java面向对象的三大特征:封装-继承-多态

时间:2021-08-30 23:37:57

java面向对象的三大特征:封装-继承-多态  


什么是面向对象?

Java是一门面向对象的语言,面向对象跟面向过程一样,都是一种思想,面向过程强调的是功能行为,关注的是实现功能所要完成的步骤.然而面向对象强调的是具备功能的对象.关注的是解决问题需要哪些对象.

什么是对象?

万物皆对象,所有的事物都可以看成一个对象.描述现实事物,行为就是事物身上的动词,属性就是事物身上的名词.

java中最基本的单位是类,在类中描述事物

成员方法就是事物的行为,成员对象就是事物的属性.


面向对象的三大特征

封装      继承      多态(抽象)


封装

什么是封装?

广义上:类和方法的体现就是封装的一种

狭义上:private+set/get方法    即隐藏对象的属性和实现细节,提供set,get方法供外界操作.

    private仅仅是封装的一种体现形式,不能说封装就是私有

封装的好处:
1.隐藏实现细节,提供公共的访问方式
2.提高代码/数据 安全性
3.提高了代码的复用性


继承

继承就是父子继承

父类又称为基类,超类


继承让类与类之间产生了关系

格式:
class 子类名 extends 父类名{

}


继承的好处:

1.提高了代码的复用性,少写了代码

2.让类与类之间产生了关系,这是多态的前提

继承的弊端:

类的耦合性增强了, 开发的原则: 高内聚低耦合
内聚: 就是自己完成某件事情的能力
耦合: 类与类的关系

继承的特点

1.只能单继承,一个类只能有一个父类,可以有多个子类

2java支持多层继承

多态

定义:某一种事物的多种表现形态

动物 有猫,狗

猫 mao = new 猫();

动物 d = new 猫();

多态的前提:1,父类应用指向子类对象

   2,类与类之间存在关系,继承或者实现

   3,子类必须对父类的方法进行覆盖(重写)

interface Fu{
void fu();
}
class Zi implements Fu{  //必须是类与类之间有关系 要么继承 要么实现
//子类存在重写
void fu(){
System.out.println("我把fu()方法重写了!");
}
}
class Test{
Fu fu = new Zi();//父类引用 指向 子类对象
fu.fu();
}

多态的好处
提高了程序的扩展性 作用体现在可以当做形参 可以接收任意子类的对象
多态的弊端 
但是只能使用父类的引用访问父类中的成员
不能使用子类的特有属性和方法 如果想要使用 必须向下转型
Fu fu = new Zi();
Zi zi = (Zi)fu;
这样就可以用zi.方法调用子类自己特有的方法


对象的向上转型和向下转型
// byte b = 2; int x = b;
//基本数据类型自动提升 体现在了引用数据类型中 向上转型
//强转 向下转型 父类型转成子类型


/*
问:可以这么做么?
Animal a = new Animal();
Cat c = (Cat)a;
错误 不能强行将一个动物转成猫
不能将父类对象 转成子类对象
多态转的是父类引用 指向了自己的子类对象时 该应用可以被提升 也可以被强转
多态至始至终 都是子类对象在做着变化


*/