*继承*
1,是类与类之间的关系,“单一”继承让类的结构更清晰,从类中抽取共同的方法与属性成父类,父类唯一性。
* 优点:1,更用 2,分离//子类写属于自己的方法....
3,is-a继承。
4,extends关键字,在子类类名后面extends加父类类名,表示继承。
5,子类通过内存叠加的方式实现。
构造方法参与但不被继承//1,构造方法是产生对象的。2,构造方法与类名同名。
* 方法的重写
//只指普通方法,不包括构造方法。
1,方法名,参数列表,返回类型都要相同。
2,子类重写的访问修饰符必须大于等于父类被重写方法的访问修饰符。
3,子类中重写的异常不能抛出比父类更多的异常。
* Object类是所有父类,包括数组。
* public final class getclass();
* public int hashcode();
* public boolean equals (Object x);//两个对象的内容是否相等。
* protected Object clone()thows clone not supported Exceptions
* public String toString();返回一个字符串描述
* protected void finalize()thows Throwable;//销毁对象,给GC机制准备
* public final void wait()thows Interrpted Exception;
* this*
含义:当前对象
语法:属性&方法——本类中全部可访,他类中受到访问修饰符影响,造成部分可访。
* super*
含义:当前类的父类。
语法:属性&方法——本类全不可访,父类受访问修饰符影响,部分可访。
* super()//默认:调用父类的无参构造。 调用父类的指定构造。
位置:写在构造方法的第一句。
* this()//没有默认 操作本类。
位置:写在构造方法的第一句。
super()&this()不能共存!
* final 最终得,不变的
类:修饰后不能被继承。
方法:修饰后不能被重写。
类的高级概念
* 访问修饰符
1,public//公共的 2,protected//受保护的 3,default//默认的 4,private//私有的
* 封装
1,组装:定义一个类
2,信息的隐藏
2.1访问修饰符
2.2方法的实现//调用者不需要知道方法的具体步骤,只关心功能是否实现
2.3 提供符合命名规范的 getxx()访问器 setxx()修改器
好处:类的成员变量可以成为只写或只读
类对存储在其成员变量中的内容有一个整体的控制
类的用户不需要知道类是如何存储数据的
*静态类成员 Static*
凡是修饰属性或对象——全类共享一个值,与对象无关,属于类级别。
凡是Static都优先加载
类属性/静态属性:1,修饰的属性被产生于内存中的数据段的静态区中。
2,常量直接加Static
类方法/静态方法:1,只能操作Static的属性和方法。
2,工具类的工具方法全是类方法。
构造方法不能用Static修饰。
静态方法只能访问静态方法,非静态方法可以访问静态方法。
一个静态方法可以调用其它类的静态属性
* 递归:一个方法在方法内部调用它本身,形成循环效果。
* 使用:当下一次循环的初始条件依赖于上一次循环的结果。
* 静态初始化块//静态代码块
publi class类{ //用途:在类加载期书写一些准备工作的代码
Static { //语句
}
}
类加载期即执行,在main方法之前,每个类只被执行一次
* 实例初始化块
在对象产生的时候被自动执行,没产生一次对象就执行一次,可执行多次。
* 顺序
在本类构造方法之前,父类构造方法之后。功能与构造方法部分重合。
* 内部类指代把1个类定义在另一个类的内部。
* 内部类也是一个完整的类,可以有属性,方法,构造方法,代码块。
* 内部类也有独立的class文件。//java文件的文件名与class文件名无关,除非有公共类。
* 特点:
独立的class文件。
同样需要编译。
同样可以产生对象。
*内部类的位置
* 1.成员内部类
* 1.1在外部类的内部,可以产生成员内部类的对象。
* 1.2静态内部类(特例)
* class文件名 = 外部类的类名
内部类类名.class∗可以直接产生内部类对象,无视访问修饰符情况调用其属性和方法。方法同样!∗this当前内部类所属的外部类格式:外部类名.this.属性名∗∗2.局部内部类∗2.1在方法中定义。∗2.2只能在方法内部使用。∗2.3class文件名=外部类类名
内部类类名.class
* 2.4匿名内部类(特例) new 外部类类名(){代码块}.方法名()/外部类类名$数字,没有类名。
多态
* 相同的属性,不同的实现。
* 静态多态:在编译期就已知方法实现的最终效果/方法重载实现
* 动态多态:编译期未知,运行期根据绑定对象的不同有不同的效果/使用动态绑定和方法重写实现
* 转型技术:当操作符两端的数据类型不一致的时候,就会转型。
* 强转/向下转型
int a = (int) 3.14//当大的数据往小的空间放,必须经行强转/向下转型
* 自动转换/向上转型
double d = 5//当小的数据往大的空间放,会自动转换
* 引用数据类型同样存在转型技术/必须存在继承关系
* 只要这两种情况OK
* 1,父类的引用可以指向子类的对象/向上 //只能调用来自父类的属性和行为,受访问修饰符限制
* 2,本类的引用指向本类的对象/向下 //只能看到本类所有的属性和行为,受访问修饰符限制
* 强转,编译有可能通过,但运行有风险;必须保证运行的最终结果。
* 动态多态技术
* 1, instanceof 关键字,运算符 /判断,返回真or假
* 2,向上转型技术
* 3,动态绑定技术