面向对象深入部分

一:继承

子类继承了父类,拥有了父类的一切(但你未必全能用)

对象 instance of 类

override 三大原则:

1.方法名 参数列表相同
2.返回值类型和异常类型 子类要小于父类
3.返回权限 子类要大于父类

object类是所有类的父类,最核心基础的类,所有类都是object

打印一个对象其实是调对象的tostring方法,没实现tostring就用object的tostring。
== 判断值是否相同 对象则判断地址是否相同
equal判断对象是否相同 一般需要重写(比如人这个类 身份证相同就是同一个对象),没重写时 this == obj也是用等于判断
**String类型已经帮我们写了equal方法 ==判断是否是一个对象 equal判断字符串内容是否相同 *
JDK给我们提供的一些类,大都重写了equal供我们调用
构造方法与静态初始化快的调用顺序都是先调用父类的 最后才调用自己的

二:封装

程序设计核心:高内聚 低耦合

java中的访问控制符权限


java bean 规则
1.属性通常都private
2.对外暴露set get 方法,在set get里就可以做属性控制了。
3.方法一般public即可

三:多态

同一个方法 调用的对象不同,产生的行为可能不同(方法的多态)

多态的条件:

1.继承

class Animal{
    void shot(){
        System.out.println("动物叫了一声");
    }
}

class Dog extends Animal{
    @Override
    void shot(){
        System.out.println("狗叫了一声");
    }
}

class Cat extends Animal{
    @Override
    void shot(){
        System.out.println("猫叫了一声");
    }
}

2.重写

@Override
    void shot(){
        System.out.println("猫叫了一声");
    }
##重写shout方法 

3.父类引用指向子类对象

 static void  AnimalCry(Animal a){
        a.shot();
    }
##父类animal的引用a ,调用时是子类具体对象 cat dog的shot方法

从dog,cat转成animal是向上转型 可以自动发生 向下转型需要强制转型。

四:final修饰符

修饰变量 值不可变
修饰方法 不能重写
修饰类 不能继承

五:抽象类与抽象方法

1.包含抽象方法的类一定是抽象类

抽象方法有什么作用?

1.没有实现,子类继承时必须实现。
2.抽象类不能实例化
3.为子类提供统一的规范

六:接口

比抽象类更抽象
抽象类还可以有普通方法,接口里的全是abstract的
接口就是规范,定义了一组规则,如果你是,则必须能。。
接口可以多继承
接口不能定义变量

七:面向接口编程

八:内部类

(1)成员内部类

内部类里访问外部类的属性:Outer.this.age
内部类里访问自己的属性:this.age
外部类不能随便用内部类的东西

非静态

Outer.Inner inner = new Outer().new Inner(); //内部类对象依托于外部类的

静态

Outer.Inner inner = new Outer.Inner();

(2)匿名内部类

只使用一次

(1)局部内部类

posted @ 2020-01-26 10:32  彩笔梳子0806  阅读(108)  评论(0编辑  收藏  举报