本帖最后由 小石姐姐 于 2017-12-22 15:26 编辑
初入就业之六日随笔
就业第一天
知识回顾:
Java中的数据类型:
4类8种
整数byte,short,int,long
浮点数
float,double
字符
char
布尔
boolean
引用数据类型
Student s = new Student();
基础类型的转换:
自动类型转换:
byte short char ---int ----long----float---double
一般由大到小
预算结果
数组:存储多个元素的一种容器
数组的特点:
元素类型必须一致
元素有整数索引
定义好长度无法改变
可以存储基本数据类型和引用数据类型
动态初始化
数据类型[] 数组名 = new 数据类型[数组长度]
静态初始化
数据类型[] 数组名 = {元素1,元素2,.....}
static静态关键字
作用:修饰成员变量和成员方法
特点:修饰的成员被所有的对象所共享
可以直接使用类名来调用
静态所修饰的成员加载优先于对象
随着类的加载而加载,随着程序结束而结束
定义位置不同
静态成员:在方法区,类解码文件时初始化(在方法区中)
非静态成员:创建对象时开始加载初始化(在堆内存中)
静态成员在内存中的位置
方法区中的类的字节码区域中的静态区域中
静态成员的加载时机
随着所在类的加载而加载
静态成员和非静态成员的区别
生命周期不同
静态成员: 随着类的加载而创建, 随着程序结束而销毁
非静态成员: 随着对象的创建而创建, 随着对象的销毁而销毁
所以, 静态成员的生命周期优先于非静态成员创建, 晚于非静态成员销毁
内存中的定义位置不同
静态成员: 方法区中类字节码区域的静态区中
非静态成员: 堆内存中
初始化时机不同
静态成员: 类加载时初始化
非静态成员: 对象创建时初始化
static注意事项;
静态方法:
可以调用静态的成员变量
可以调用静态的成员方法
不可以调用非静态的成员变量
不可以调用非静态的成员方法
只能在静态的方法中调用静态的变量
非静态方法:
可以调用静态的成员变量
可以调用静态的成员方法
可以调用非静态的成员变量
可以调用非静态的成员方法
非静态的方法可以调用静态和非静态
静态方法中没有this对象,因为静态方法随着类的加载而加载,此时没有对象引用
优点:
对对象的共享数据提供单独空间的存储,
可以直接被类名,不用在堆中创建对象
弊端:
访问有局限性(静态只能访问静态)
math类:工具类,包含一些基本的数学运算方法
代码块:
分类:
局部代码块:
存在于方法中,控制变量的生命周期(作用域)
位置:方法中
执行时机:执行到方法中的局部代码块时
作用:控制变量的声明周期
构造代码块
提取构造方法中的共性,每次创建对象都会执行,并且在构造方法之前执行
执行时机:创建一个对象时,在构造方法之前执行,
作用:
静态代码块
随着类的加载而加载,只加载一次
位置:类中,方法外,static修饰
执行时机:加载类时执行,只执行一次
作用:加载类时进行初始化操作,只需要执行一次
就业第二天
继承:
概述:
1.从已有的类中派生出新的类
2.已有类成为父类(基类),新类成为子类(派生类)
3.子类对父类的类型就是继承
作用:
多个类有共同的成员变量和成员方法,抽取到另一个类中(父类),再让其他类去继承这个父类,获取父类中的成员变量和成员方法.
关键字:extends
作用:子类继承父类时使用
位置:子类类名后
格式:权限修饰符 class 类名
特点:
1.Java语言只支持单一继承,只能继承一个父类
2.Java语言支持多层继承,
注意:
Java中所有的类都直接或者间接的继承自Object类
继承中成员变量的特点:
1.子类只能获取父类非私有成员
2.子父类中成员变量名字不一样直接获取父类的成员变量
3.子父类中成员变量名字一样的获取的是子类的成员变量
@Override 注解
用于约束被注解的方法必须是重写父类的方法,父类没有这个方法则报错
方法的重写:在子父类中,子类的方法和父类的完全一样,子类重写了父类的方法(覆盖).重写了之后使用子类对象调用的是子类的方法
方法的重载:在同一个类中,有多个方法名相同的方法,但参数列表不同
重写的应用场景:
当父类的方法不能完全满足子类使用时,子类重写父类的方法,并可以在方法内部使用super调用父类的方法,这样既有父类的功能,也可以拥有子类特有的功能
重写的注意事项:
不能重写父类私有的方法,
子类方法权限必须大于等于父类权限
继承中成员方法的特点:
1.子类调用方法时,先调用子类的.子类自己没有再调用父类的.父类没有会报错
super:可以获取父类的成员变量和成员方法,用法和this类似
继承中构造方法的执行顺序:
在有子父类继承关系中,创建子类的对象,调用子类的构造方法,如果子类的构造方法第一行没有调用父类的构造方法,默认调用父类的无参构造方法.
肯定会先执行父类的构造,因为要先给父类的成员变量进行初始化,子类可能会使用到
可以使用super关键字在子类构造方法中调用父类的构造方法
___需要补充 this和super的区别
this:当前对象的引用(谁调用就代表谁)
调用子类中的成员方法和成员方法
super:子类对象父类的引用
调用父类的成员变量和成员方法
注意this和super用于调用构造方法时,必须在构造方法第一行调用
继承的优点:
提高了代码的复用性
提高了代码的可维护性
缺点:
类的耦合性增强了
开发的原则:高内聚低耦合
内聚:自己完成事情的能力
耦合:类与类之间的关系
匿名对象&final类(最终类)
匿名对象:
没有名字的对象,没有变量引用的对象
格式:
new 类名().属性;
new 类名().方法;
作为参数:Student.eat(new Food("苹果"));
匿名对象的应用场景:
当方法只调用一次的时候可以使用匿名对象
可以当作参数进行传递,但无法在传参之前
注意:
匿名对象可以复制,但是赋值没有意义
final(最终类):修饰符,可用来修饰类,成员方法和成员变量
final修饰的类:不能被继承,不能有子类
final修饰的方法:不能被重写,
final修饰的变量:不可被修改的,是常量
常量:
字面值常量:1,2,3
自定义常量:被final修饰的变量,一点初始化就不可改变
注意:自定义常量必须初始化,可以选择显示初始化或构造初始化
抽象类成员特点
抽象类
概述:无法具体描述的,但能表示出共性
abstract:关键字,用于修饰方法和类
抽象方法:不同类的方法是相似的,但是具体内容又不太一样,所以我们只能抽取他的声明,没有具体的方法体,没有具体方法就是抽象方法.修饰符只能用public或protected
注意:一个类继承了抽象类,这个类也要用abstract修饰
类与抽象类的关系:
抽象类也是类
一个子类继承了抽象类后只有2种选择:
重写抽象类中抽象方法(可以是空实现),
将该子类也改为抽象类
抽象类成员的特点:
成员变量:
可以有成员变量
可以有常量
成员方法:
可以有抽象方法
可以有非抽象的方法
构造方法
可以有, 通过子类调用super()来实现抽象类成员的初始化
abstract不能与final和private一起用
final: 因为抽象方法必须被重写, 而final修饰的方法不能被重写, 有冲突
private: 因为抽象方法必须被重写, 而private方法子类看不见, 所有有冲突
抽象思想的作用: 起到规范的作用
就业第三天
接口
概述:比抽象还抽象的类,
接口内都是抽象方法,接口和类的关系是实现.实现关键字:implements
作用:
1.用于处理继承单一的局限性,
2.为实现类扩展出接口具有的功能
定义接口格式:
权限修饰符 interface 接口名{}
类实现接口格式
权限修饰符 class 类名 implements 接口名1,接口名2...{}
接口的成员特点:
1.只能有抽象方法
2.只能有自定义常量
3.默认且只能使用public&abstract方法
4.默认使用public static final修饰成员变量(常量)
建议:
定义接口方法时加上public&abstract,为了减少不必要的麻烦
注意:
1.接口不能实例化对象
2.类和接口的关系是实现,类实现接口必须实现它的全部方法
接口不能有构造方法,也不可以实例化对象
类与类 :继承关系,单一继承.多层继承
类与接口 :实现关系,多实现
接口和借口:继承关系,多继承
接口的优点:
1.类可以实现多个接口
类与类是单一、多层继承,但具有局限性
接口打破了这个局限性
2.对外提供统一的规则,(类似USB接口)
3.减低了程序的耦合性,(能够实现模块化开发,定义好规则,每人实现自己的模块,提高开发效率)
抽象类和借口的区别:
共性:不断的抽取,抽取出抽象的概念
区别:
1.与类的关系
1.类与接口是实现关系,且多实现,一个类可实现多个接口
2.类与抽象类是继承关系,Java中只能单一继承,且可以是多层继承
2.成员
1.成员变量:
1.抽象类有成员变量,自定义常量
2.接口能有自定义常量,且有默认修饰符public static final
2.成员方法:
1.抽象类有抽象方法,非抽象方法
2.接口只有抽象方法,且有默认修饰符public abstract
3.构造方法:
1.抽象类有构造方法,用于初始化成员,不能用于创建对象
2.接口没有构造方法,更不能实例化对象
抽象类和借口的用处:
1.当定义的类可以作为子类的父类,且有抽象的方法时,则定义为抽象类
2.当定义的类不足以作为子类的父类,而只是用于扩展的功能时,定义为接口
多态
前提:
1.子父类的继承关系
2.方法的重写
3.父类引用指向子类对象or父接口引用指向子类对象
父类引用 Animal cat
指向 =
子类对象 new Cat()
动态绑定:
运行期间调用的方法,根据具体的类型
多态的成员特点:
成员变量:成员变量看的父类型,运行时看的也是父类型,因为变量没有重写和动态绑定的
成员方法:编译看左边,运行看右边
静态方法:编译看左边,运行看左边
多态中的向上转型和乡下转换
向上转型:
由小到大(从子类转到父类),作为参数类型,简化代码
向下转型:
由大到小(从父类转到子类),调用子类特有的方法
多态的优缺点
缺点:无法直接访问子类特有的成员,....
优点:提高代码可维护性,提高代码可维护性,提高代码复用性
instanceof语句
作用:判断一个对象是否是某一个类的对象,如果是则返回true,如果不是则返回false.
格式:对象 instanceof 类名
常见用法:if(s instanceof Student){}
判断普通类,抽象类和借口的应用场景
没有抽象方法则定义为普通类
有抽象方法需要子类实现,且能够概括的描述子类,则适合定义为抽象类
定义的类只用于扩展某种功能,但又不能概括的描述子类,且该类不需要非抽象的方法
|
|