java path3

1.方法的继承,除了私有方法,其他方法都可以继承
    重写:方法名不变,参数类型列表不变,返回值类型不变或是父类返回值类型的子类型,修饰词不变或范围扩大
2.构造器,不能被继承   子类首句使用super(有参传参)调用父类构造器
3.权限控制访问修饰词:
    private:
        修饰属性,只能在本类被调用,其他类不可用
        修饰方法,方法只能被本类中被调用,对其他类不可见
        修饰内部类(普通的类不能使用)
    default:(默认)
        修饰属性时,本类可以使用,在同一个包下可以使用,子类不可见
        修饰方法时,本类可以使用,同一包下的类可以使用
        修饰类
    protected:
        修饰属性时,本类,同包,子类中可见
        修饰方法时,本类,同包,子类中可见
        修饰类
    public:
        公共的,都可以调用
4.javaBean规范:
    属性尽可能的私有化,为了其他类中可以访问值,需要提供相应的公有的 getter()和 setter()方法
5.static关键字
    1).修饰属性:就不是对象的属性。属于类的属性,是公共的。可以通过( 类名.  )调用
        静态属性存在方法区中,只有一份
    2).修饰方法:方法也是被加载到方法区内的,也是类的公有资源,不是对象的
        建议使用类名进行调用
        不能直接访问非静态的属性和非静态的方法
    3).修饰代码块:static{
        
                       }
        修饰的代码块加载期间执行一次(而且只执行一次),执行时间是在创建对象之前,一般用来加载静态资源
6.final
    可以修饰属性,只能声明时赋值或者在构造器中赋值,之后不能再被赋值(只能赋一次值)
    可以修饰方法,但修饰后就不能被子类重写(为了避免子类不经意间重写了这个方法,用final修饰)
    可以修饰类,修饰的类不能被继承,不可能存在子类                String类型就是final修饰的类(string类型的数据一经创建不可改变)
7.抽象类
    用关键字abstract关键字修饰的类就是抽象类,不能被实例化,但存在构造器
    方法可以没有方法体(大括号),用abstract修饰,以(;)结束
    抽象类和类的区别:
        抽象类中可以有抽象方法和普通方法,可以有构造器,可以有属性。类中不能有抽象方法。
    有抽象方法的类一定是抽象类,但抽象类中不一定要有抽象方法
    抽象类可以被继承:如果子类是一个普通类,那么必须重写父类的所有抽象方法,写出{}
                           如果子类是一个抽象类,符合抽象类的特点即可
8.接口 interface
    特殊的抽象类,没有构造器,不能实例化
    特殊在:如果有方法,一定是抽象方法,但abstract关键字可以省略;如果有属性,一定是常量(常量只能直接赋值,或在静态块中赋值)
        常量的修饰词:static final     常量的名字全都大写
    接口其实是一种协议,标准

    接口于抽象类,普通类的关系:

9.面向对象的三大特征:继承,封装,多态
    多态
        对象的多态:不同的父类型的引用指向同一个对象,会有不同的功能
            如:一个人,处于公司时,只能做公司的事;处于家里时,只能做家里的事。
        变量的多态:同一个变量指向不同的子类对象
            如:一个人,可以作为一个父亲,也可以作为一个 ceo,但都可以使用‘人’的行为
            
    继承优点:可以不用修改一个类,利用继承,扩展这个类,生成一个子类,有利于二次开发
    封装优点:提高代码的重用性,减少冗余,减少代码的可见性,相对安全
    多态优点:(代码更为灵活)
10.向上转型
    父类型的变量指向子类型的对象
        在编译期间,变量调用的方法是父类型中的
        在运行期间,如果调用的方法子类中重写了,那么调用的是子类重写的方法
                        如果没有重写,调用的是父类中的方法
    变量调用的属性:一定是父类中的属性
    
    总结:属性是绑定到变量身上的,方法是动态绑定到对象上
             属性看变量类型,方法看对象类型
11.向下转型
    将父类型的变量,转换成子类型的变量    
    
    Aoo a = new Boo();
    Boo b = (Boo)a;
    有可能会出现ClassCaseException
    
    Aoo a = new Coo();
    Boo b = (Boo)a;
    (编译期间不报错,因为只检查代码的语法是否正确)
    
    为避免上面情况,使用instanceof进行判断
    判断变量所指的对象是不是某一类型:
    Aoo a = new Coo();
    if(a instanceof Boo){
        Boo b = (Boo)a;
    }
12.内部类
    在类内部定义的类型,叫内部类
    成员内部类:在类内部定义的,与方法并列的,是外部类的成员(只让外部类使用)
                    内部类可以使用外部类的属性方法
    匿名内部类:
        接口的匿名内部类
        抽象类的匿名内部类
        普通类的匿名内部类



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值