Java学习笔记——面向对象02

时间:2023-02-26 17:44:50

封装:(类内部不被外部干涉,暴露的少,类似于C++的private和public)

private:类

default/置空:类、包

protected:类、包、子类

public:类、包、子类、所有类

要点:

用get/set(public)方法来 读取/设定(private)属性

*boolean变量的get方法用is开头

 

多态:(只针对方法,不针对属性)

引用时以模糊的类型(一般为父类),运行时传入的参数具体化(具体的子类)

必要条件:继承、方法的重写、父类引用指向子类对象(实现了【父 a = new 子()】)

强制转型问题:在父 a = new 子()后,不能a.子类中的方法(编译时未找到方法),只能强制转型;运行时依旧以真实子类判断,b子类被强转c子类时编译不报错,运行报错

* a instanceof b:a(变量)引用b类(类名)变量

 

 

抽象类,抽象方法:

abstract,包含抽象方法的类一定是抽象类(都要加~)

非抽象的子类必须重写抽象父类的抽象方法

抽象类不可实例化,可以有普通属性和方法,但构造方法不能用new,只能被子类调用

抽象类只用于继承

 

接口(interface):如果你是xx,则必须能xx

抽象类的抽象,public interface 接口名 【public class 类名】,只含常量和抽象方法

接口也具有继承的性质,且支持多继承

常量属性自带了隐式的【public static final】

方法的属性只能是【public abstract】(公开的抽象的)

实现(implements),public class 类 implements 接口

接口不能被实例化

 

回调:CallBack,Hook

多态的应用,在某处有多种解决方法,则在该处留下hook,交由其他部分给出解决方法。

 

 内部类:

只能让外部类直接访问,不允许同一个包的其他类直接访问;可以直接访问外部类的私有属性,反之不行

非静态内部类的成员不能为静态;静态内部类可以视为外部类的静态成员,从属于类,不一定需要外部类对象