0%

Java重点知识总结-day03

【介绍】java学习过程中重点知识的总结-第三天

回顾

·多态,向下转型具体什么时候用
    复习:
        1.多态的使用前提:
            a.必须有继承或者实现
            b.必须有方法的重写
            c.表现形式:
                父类类型 变量名 = new 子类类型();
                接口类型 变量名 = new 实现类类型();
        2.多态的成员的特点
            使用多态调用成员变量:编译看左边,运行看左边
            使用多态调用成员方法:编译看左边,运行看右边
        3.多态的弊端:
            不能调用子类特有的成员方法,只能调用父类共有的成员方法
        4.如果就是想调用子类特有的方法,怎么办?
            向下转型,把父类类型的变量,转会到对应的子类类型上
·接口有什么构造方法吗?抽象类?有什么作用?
        接口没有构造方法
        抽象类是有构造方法的
                因为所有的类,都有一个共同的父类
                    例:public class Person implements Police{
                                    public Person(){
                                            super();
                                    }
                                }
·this和super的语句形式
        this():调用本类构造方法
        super():调用父类的构造方法
        this()和super()不能同时出现在一个构造方法的第一行

1.static

a.什么时候用static来修饰成员
    当这个成员不属于某一个对象,而是属于所有对象。或者属于这个类,南无需要static来修饰它
b.被static修饰的成员有什么特点
    i.存在方法区中的静态区,只有一个空间
    ii.静态时有限于对象存在
    iii.如何访问静态成员:
            对象名.静态成员; //这是可以的,但是不建议
            类名.静态成员; //建议使用

2.final

final 修饰类(太监类)  不能被继承(没有子类)  但是可以是其他类的子类
final 修饰方法(最终方法) 子类不能被重写
final 修饰成员变量
    a.这个成员变量在创建对象之前必须初始化
        (直接复制,在构造方法中赋值)
    b.只能赋值一次
final 修饰局部变量
    a.基本类型
        该变量只能赋值一次(实际上就是常量)
    b.引用类型
        该引用类型的变量保存的地址不能改变
        但是地址指向空间中的内存可以改变
        final  Person p = new Person();
        p = new Person();错误的
        p.name = ;正确的
        p.age = 18;正确的

3.包

导包的关键字 import
全限定类名  包名.类名(可以不用导包)后期说反射,用到全限定类名

4.权限修饰符

public protected default(默认,可以不写) private
如果一个成员指向在本类中使用 用private修饰
如果一个成员只想在本类中和本包中使用 不写修饰
如果一个成员只想在本类中和本包中或者其他包的子类中使用 用protected修饰
如果一个成员想在所有类中都可以使用 用public修饰

5.内部类

根据内部类定义位置不同的分类
    a.成员内部类定义类中方法外
        在其他类中如何创建该类的对象
        固定格式
                外部类名.内部类名  变量名 = new 外部类()/new内部类();
    b.局部内部类定义方法中
        在其他类中,是无法使用的
        只能局部位置使用

6.静态代码快

 代码块,在成员位置使用大括号括起来的一堆代码
           public class Person{
       静态代码块
       static{
           代码块
       }

       public void show(){

       }
   }
·特点
   1.当我们使用到一个类时,那么这类中的静态代码块自动执行
   2.只会执行一次,第一次使用该类,就立刻执行
   3.在同一个类中,静态代码块的优先级很高,比构造方法优先,比main方法优先
   4.作用
       用来初始化类中某些功能(mysql的数据库驱动的加载)

7.匿名内部类

a.作用
    快速创建 抽象类的子类对象,接口的实现类对象.

b.格式
    第一种
        new 抽象类(){
            重写抽象类中所有的方法
        };
    第二种
        new 抽象类(){
            重写抽象类中所有的方法
        }.重写后的方法();
    第三种
        接口类型  变量名 = new 接口(){
            重写接口中所有的方法    
        };       
-------------    本文结束  感谢您的阅读    -------------