oop(面向对象编程学习2)

oop(Object Oriented Programming)面向对象编程


Day03:
    面向对象三(四)大基本特征:(抽象)封装 继承 多态

    继承:
        什么是继承?(通俗的讲,代码不是自己敲出来的也可以正常使用)
        继承是面向对象编程中一种代码复现的方式
        为什么需要继承?
            减少代码冗余,提高程序的可维护性和可扩展性
        如何使用继承?
            语法:
            class<类A>extends<类B>{
    }
            我们可以把上述代码理解成,类A继承了类B
            类A我们称之为子类,B类称之为父类;子类可以使用父类的属性和方法(并不是能继承所有属性和方法)
        继承的特性:
            1.子类的类可以调用父类中的成员(包括属性和方法)
            2.子类的对象打.也可以调用父类的成员
            3.子类继承父类应该遵循is-a原则
            4.构造方法无法被继承
        继承的单根性
            一个子类只能继承一个父类
        继承的传递型
            一个子类可以调用到祖先类的成员(父类的父类)
        Object类
            java中所有的类都是Object类的子类
            所有类的对象都可以调用Object类的方法
            我们编写的类如果没有继承任何类,默认继承Object类
    继承关系下,构造方法的执行:
        实例化子类对象实际上先运行父类对象
        子类对象中实际包含着一个父类对象的引用
        子类构造中,可以选择调用父类构造方法
        使用super语法进行父类构造方法的调用(super和this比较相似)
        如果子类构造方法不指定调用父类的哪个构造,则默认调用父类的无参构造
super关键字
    是对象在方法中对父类对象的引用
    super.<属性>;
    super.<方法>();
    super调用父类属性和方法,主要用于区分同名成员时
    super();调用父类的构造
        //必须编写在子类构造的第一行(子类默认调用父类的无参构造,等价于在第一行写了super();)


Day04:
向上造型
    1)我们将子类对象赋给父类引用或者父类引用指向子类对象,我们称之为向上造型
    2)为什么需要向上造型
        子类对象可以放入父类类型的数组当中,父类数组统一管理所有子类对象,减少代码冗余
    3)向上造型的格式
        <父类类型><引用>=<子类对象>;
        如:Pet p=new Dog;  将父类宠物类的子类狗类向上造型
    4)向上造型的特征
        向上造型以后的父类引用只能调用父类中的成员,不能调用子类特有的成员

方法重写(方法覆盖 override)
    1)什么是方法重写
        子类不满足父类的某个方法的功能,重新编写父类方法的现象
    2)为什么需要方法重写
        父类中的方法不满足子类的需求
    3)如何进行方法重写?
        在子类编写一个和父类某个方法 方法名相同,参数列表相同,返回值类型和访问修饰符都相同的方法
    4)效果
        在向上造型的前提下,指向子类对象的父类引用在调用被子类重写的方法时,运行的是子类重写后的方法
    5)方法重写运行期绑定
        父类引用在运行方法时,JVM虚拟机会检测这个父类引用指向的真实类型,调用真实类型重写后的方法
    6)方法重写的详细规则
        6.1方法名和参数列表必须相同
        6.2有返回值时
            当返回值是基础数据类型时,返回值必须相同
            当返回值是引用类型数据时,可以返回其子类
        6.3访问修饰符类型
            子类的重写方法的访问修饰符不能比父类更加严格(public protected 默认 private)
        6.4子类重写的方法抛出异常必须和父类方法相同或和其子类相同


方法重载(overload)和方法重写(override)
        位置    方法名    参数    返回值    修饰符
重载    同类    相同    不同    无关    无关
重写    子类    相同    相同    相同*    相同*
方法重载在编译期绑定
方法重写在运行期绑定


package(包)
    1)什么是包?
        组织java文件的一个文件(单元),一个包里面可以放多个java文件
    2)为什么需要包?
        2.1可以将相关的java文件放在一个包里面,方便管理
        2.2将项目中同名的类放在不同的包里面,不会冲突
    3)包的注意事项
        3.1包名必须全部小写,如由多个单词组成,用.分隔
        3.2一个类的类名实际上是有包名做前缀的,这样的叫做全类名java不允许出现全类名相同的文件
        3.3可以使用<域名反写>来确保全类名的唯一性


import关键字
    1)什么是import关键字
        导入不同包的其他类
        如:import  java.util.Scanner;
             import  java.util.Random;
    2)为什么需要import关键字
        使用import关键字可以减少使用不同包其他类时使用全类名
    3)import的使用
        <包名>.<类名>;  导入一个其它包的类
        <包名>.*;  导入这个包的所有类
    4)import的注意事项
        4.1不能在同一个类中导入两个同名类
        4.2不能在类中导入和自己同名的类
        4.3导入单个类名的优先级比导入*的优先级要高
        4.4在JVM运行时默认导入java.lang.*;

访问修饰符
    1)什么是访问修饰符?
        能够设置类中的成员对外部访问权限的一组关键字
    2)为什么需要访问修饰符?
        为了保护重要的信息和数据不会被随意访问或篡改,将那些比较私密的信息,用严格的访问修饰符保护
    3)访问修饰符的分类
        public  protected 默认 private
    4)访问修饰符的权限
                        同类    同包    子类    其他类(不同包的类)
public              允许    允许     允许      允许        宽松
protected        允许     允许    允许
默认                允许    允许
private             允许                                            严格

    访问修饰符号可以修饰类的成员
    类(class)只能被public或默认修饰
    通常情况下,类的属性设置为私有,类的方法设置为公有

final修饰符
    1)final修饰类
        被final修饰的类不能有子类,子类不能继承被final修饰的类(为了提高安全性)
    2)final修饰属性
        属性被final修饰以后,属性值不能修改,对属性赋值有两种方式(1.声明的同时赋值 2.在构造方法中赋值)
    3)final修饰方法
        表示该方法不允许被子类重写
    4)final修饰局部变量(唯一可以修饰局部变量的修饰符)
        修饰方法中声明的变量:只能被赋值一次  形参是已经被赋值的局部变量,所以不能修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值