崇之他和她

导航

the fifth day 001OOP面向对象

对象

栈 》》堆 引用

类 静态属性 动态方法

封装

高内聚,低耦合。类的内部数据操作细节自己完成,不容许外部干涉

数据的影藏 : 禁止访问对象中数据的实际表示,通过接口调用 get /set

安全细节 统一接口 便于维护

继承extends

所有类都默认继承了object 类

子类只有一个直接父类,this.name 本类中的属性 super.name 父类的属性

子类调用父类的构造supper();必须放在第一行

super 和this 不能同时调用

final修饰的类不能被继承 final修饰的属性不能被重新赋值及改变

方法重写

子类重写父类的方法 override

参数列表相同,方法名相同,范围修饰符可以扩大,不能缩小 。 异常范围可以被缩小 不能扩大

重写可以避免父类不需要的方法,完善父类不满足的方法

static方法属于类不能被重写 ,final修饰的存在常量池中不能被重写 private私有的不能被重写

多态

  • 有继承关系

  • 子类重写父类方法

  • 父类引用指向子类对象

  • instanceof 判断两个类之间是否存在父子关系

    父类 a = new 子类 b();父类引用指向子类 ,a可以调用的方法关键看a的引用类型,父类可调用的方法

    A a = new A();
    B b = new A();
    
    a.aa();
    a.bb();//子类可以直接调用父类方法因为子类继承了父类
    
    b.bb();
    ((A) b).aa();//父类引用无法直接调用子类方法,强转为子类引用才可以
    
    public class A extends B {
    
        public void test(){
            System.out.println("i am A");
        }
    
        public void aa(){
            System.out.println("A 子类aa方法");
        }
    }
    
    public class B {
    
        public void bb(){
            System.out.println("B 父类方法b");
        }
    
        public void test(){
            System.out.println("wo is B");
        }
    }
    
static {
    System.out.println("静态代码块最先执行且只执行一次");
}
{
    System.out.println("匿名代码块随对象创建每次初始化");
}
public void C(){
    System.out.println("构造随对象创建每次默认执行");
}

posted on 2020-12-30 18:13  崇之他和她  阅读(62)  评论(0编辑  收藏  举报