Java面向对象的三大性质

JAVA学习-05-韩顺平老师

JAVA-面向对象的三大性质

01-封装
**概念:**封装就是把抽象的数据(属性)和对数据的操作(方法)封装在一起,数据被保护
在内部程序的其他部分只有通过被授权的操作,才能对数据进行操作。
好处:
-隐藏实现细节
-可以对数据与进行验证,保证安全合理。
实现步骤:
1.将属性私有化(不能直接修改属性)
2.提供一个共有的set方法,对数据属性判断并赋值
3.提供一个共有的get方法,来获取属性的值
02-继承
**基本介绍:**继承可以解决代码复用性问题,当多个类存在相同的属性和方法时,
可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,
所有的子类不需要在重新定义这些属性和方法,只需要通过extends继承
基本语法:
-子类就会自动的继承父类的属性和方法
-父类又叫 超类,基类
-子类又称派生类

// class 子类 extends 父类 {

// }
public class son extends Father {

}

继承细节:
1.子类继承所有的属性和方法,非私有属性可以直接访问、
私有方法在子类中不能直接访问,必须通过父类提供的共有方法访问。
2.子类必须调用父类的构造器,完成父类的初始化。
3.当创建子类对象时,不管使用子类的哪个构造器,默认情况下都调用
父类的无参构造器,如果父类没有无参构造器,就必须super指定调
用父类的哪个构造器,否则编译不通过。
4.super()在使用的时,必须放在构造器的第一行
5.super()和this()都要放在构造器第一行,所以两个方法不能在同一个
构造器。
6.java所有类都是Object类的子类。
7.父类构造器的调用不限于直接父类,将一致网上追溯到Object类。
03-super关键字
**基本概念:**super代表父类的引用,用于访问父类的属性和方法。
基本语法:
1.访问父类的属性和方法,但是不能访问私有的属性和方法。
-super.属性 super.方法(参数列表)
2.访问父类的构造器
-super(参数列表)
super细节:
1.当子类和父类的成员重名时,为了访问父类的成员,必须使用super。
2.super的访问不限于父类,也可以是父类的父类,访问顺序从下到上。
04-方法重写
**概念:**方法重写也叫做方法覆盖。
注意事项:
1.子类的方法的参数,方法名称,要和父类的一致。
2.子类方法的返回类型和父类的返回类型一致,或是父类返回类型的子类。
-比如 父类的返回类型使Object,子类的返回类型可以使String。
3.子类的方法不能缩小父类方法的访问限权。
05-多态
**基本介绍:**方法或是对象具有多种形态,是面向对象的第三大特征
多态是建立在封装和继承的基础之上的。
多态的具体体现:
1.一个对象的编译类型和运行类型可以不一致。
2.编译类型是定义的时候就确定了,不能更改。
3.运行类型是可以变化的。
4.编译类型看定义 = 的左边,运行类型看定义 = 的右边。
多态的向上转型:
-前提:两个对象存在的继承关系
1.本质:父类的引用指向了子类的对象。
2.语法:父类类型 引用名 = new 子类类型
3.特点:编译类型看左边,运行类型看右边,可以调用父类中的成员方法
不能调用子类的特有成员,具体运行看子类的具体实现(动态绑定机制)
多态的向下转型:
1.语法:子类类型 引用名 = (子类类型) 父类引用。
2.只能强转强转父类的引用,不能强转父类的对象。
3.要求父类必须执行当前目标类的对象。
4.当向下转型后,可以调用子类类型中的所有成员。

public class Polydetail {
    public static void main(String[] args) {
        Animal animal = new cat(); // 向上转型
        animal.eat(); // 调用是从运行类型的类开始找方法
        animal.sleep();
        System.out.println(animal.name);
        System.out.println(animal.age);
        cat cat1 = (cat)animal; // 向下转型,才能访问cat的私有方法
        cat1.catchMouse();
    }
}
public class Animal {
    String name = "动物";
    int age = 10;
    public void eat() {
        System.out.println("吃");
    }
    public void sleep() {
        System.out.println("睡");
    }
}
class cat extends Animal {
    public void eat() {
        System.out.println("猫吃鱼");
    }
    public void catchMouse() {
        System.out.println("猫抓老鼠");
    }
}


动态绑定机制
1.当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定
2.当调用对象属性时,没有动态绑定的机制,哪里声明,哪里使用(就近使用属性)。

面向对象的三大特征小结,欢迎大家交流学习!

上一篇:redis入门


下一篇:springboot集成微信支付APIv3接口 实现小程序和公众号支付