Java的封装、继承、多态的学习

一、泛型

  1、为什么要使用泛型?

    没有泛型的的时候,任何类型都可以添加到集合中,不安全;每次取值后,需要类型强制转换,繁琐。

  2、核心思想:把一个集合中的内容限制为一个特定的数据类型,注意:泛型只能使用引用数据类型

  3、

    (1)在集合中使用泛型(掌握)

      --1:声明了泛型类,但没有使用泛型,返回一个object类型(有泛型,但是不可以使用)。

      --2:当实例化泛型对象时,需要指明泛型的类型。

      --3:指明后,对应的类型中所有泛型的位置,都变成实例化中指定的泛型类型。

      --4:当自定义泛型类型时,在实例化时没有使用泛型,默认为object类型。

      --5:静态方法不能使用类的泛型。

      --6:如果泛型类是一个接口或抽象类,则不能创建泛型类的对象。

      --7:从泛型类派生子类,泛型类型需要具体化。

    (2)自定义泛型类,泛型接口,泛型方法(理解)

二、类中四大基本属性

  private、public、protected、default。

  

          同一个类   同一个包   子类            任何地方
private    yes        no         no             no

缺省       yes        yes        同一个包yes    no
                                 不同一个包no   
受保护的   yes        yes         yes           no

公有的     yes        yes         yes           yes
    
yes表示可以,no表示不可以
基本属性是否可继承的问题

三、继承

  (1)含义:子类继承父类的属性和行为,并能根据自己的需求扩展出新的属性和行为,提高了代码的可复用性,关键字extends

    eg:Class A extends B{},A类为子类,B类为父类、基类、超类。

   super():代表父类的内存空间标示。

   this():当前对象的引用。

  (2)方法的重载与重写

    --重载:同一个类中,同一个名,不同的参数列表,注意:方法的重载与方法的返回值无关和修饰符无关,构造器是可以重载的。

    --重写:前提是在继承类的基础上,子类在获取父类结构以后,可以对父类中同名的方法进行“重构”。规则:方法的返回值,方法名,形参列表相同。子类的权限修饰符不小于父类的同名方法。

    --当子父类中出现相同方法时,会先运行子类中的方法。

    --静态方法可以被继承,但是不能被重写。

四、封装

  (1)含义:把对象的属性和行为(方法)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。在类中,属性一般都用private进行修饰,用getter和setter方法作为和属性进行操作的接口。

五、多态

  (1)含义:不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态;具体的实现方式就是:接口实现,继承父类进行方法重写,同一个类中进行方法重载,可以理解为是一个事物的多种表现形式。

  (2)使用多态的前提:类的继承、子类对父类方法的重写、父类引用指向子类的对象。

  (2)注意:

    --1:当父类中的方法只有在父类中定义而在子类中没有重写的条件下,只能被父类类型的引用调用。

    --2:对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类的这个方法(动态绑定)。静态绑定:static,final,private被修饰的,会在编译是解析,因为编译器JVM知道他们不会被重写。

    --3:对于多胎来说,编译时,看“左边”,将此引用变量理解为父类的类型,执行时看“右边”,关注真正的实体子类对象,子类的对象执行的方法就是子类重写的。

    --4:向上造型:父类  A = new 子类B();向下造型:子类B = (子类)父类对象A,用instanceof判断当前对象是不是一个类的实例。

    --5:子类对象的多态性,并不使用于属性。(属性是不能被重写的)。

六、static关键字

  static关键字修饰属性:

  1、非静态的属性,根据每个实例加载一套。

  2、静态的属性,所有的实例公用一个静态域属性;任何一个实例对其修改,会导致其他对象的也改变。

  3、有对象后,可以用"对象.类变量"使用。但是"类.实例变量"不行。

  4、类变量是存储在静态域中的。

  static关键字修饰方法:

  1、随着类的加载,在内存中也是独一份的。

  2、可以直接通过"类.类方法"的方式调用。

  3、静态方法只能调用静态属性和静态方法,不能调用实例变量。

  4、静态方法也不能调用this()和super()。

七、final关键字

  final,finally,finalize()。

  final关键字可以修饰类、属性、方法为“最终的”,不能更改了。

  1、final标记的类不能被继承。

  2、final标记的方法不能被重写。

  3、final标记的变量即为常量,且只能赋值一次,默认初始化不能被使用。

猜你喜欢

转载自www.cnblogs.com/lyr999736/p/8858693.html