ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java面向对象的三大性质

2022-02-25 22:03:15  阅读:157  来源: 互联网

标签:Java super 子类 面向对象 类型 父类 方法 三大 属性


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.当调用对象属性时,没有动态绑定的机制,哪里声明,哪里使用(就近使用属性)。

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

标签:Java,super,子类,面向对象,类型,父类,方法,三大,属性
来源: https://blog.csdn.net/sgr011215/article/details/123141953

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有