今天是就业班自习的第一天,复习了前两天的学习内容
day01
static 是一个关键字,用于修饰成员变量和成员方法
static 的特点:
被所用对象所共享
可以使用类名调用
静态的加载优先于对象
随着类的加载而加载
static 注意事项:静态方法只能调用静态的成员,非静态方法都可以调用
静态方法可以调用静态成员变量
静态方法可以调用静态成员方法
不可以调用非静态成员变量
不可以调用非静态成员方法
静态方法中没有this
Math 类:包含了一些基本的数学运算方法
static double PI // π
static double abs(double a) //返回绝对值
static double ceil(double a) //向上取整
static double floor(double a) //向下取整
static long round(double a) //四舍五入
static double max(double a,double b ) //最大值
static double pow(double a , double b) //返回第一个参数的第二个参数次幂
static double random( ) //返回随机数0-1之间
代码块 :大括号里
局部代码块:方法里,作用:控制变量的作用域
构造代码块 :作用:提取构造方法中的共性,每次创建对象都会执行,并且在构造方法执行之前执行
静态代码块:随着类的加载而加载,只加载一次
同步代码块 :(略,后面讲)
day02
继承:多个类有共同的成员变量和成员方法,抽取到另一个类中(父类);
extends
Java 继承特点:
只能单一继承,只能一个父类
支持多层继承
继承中成员变量的特点:
子类只能获取父类非私有成员
子父类中成员变量的名字不一样直接获取父类的成员变量
子父类中成员变量名字一样就获取子类的成员变量
就近原则: 谁近用谁
有局部变量就使用局部变量;
没有局部变量,有子类的成员变量就使用子类的成员变量
没有局部变量和子类成员变量,有父类的成员变量就使用父类的成员变量
啥都没有,就出错了!!
super : 可以获取父类的成员变量和成员方法,用法和 this 相似
继承中成员方法的特点:
子类只能获取父类非私有的方法
子类中没有这个方法,调用父类的
子类中重写了这个方法,调用子类的
方法的重写(override):在子父类中,子类的方法和父类的完全一样,子类重写了父类的方法(覆盖)
子类重写了父类的方法之后,使用子类对象调用的就是子类的方法
方法重写的应用场景和注意事项
方法重写的应用场景:当父类的方法不能完全满足子类使用,重写父类的方法
可以用super 中使用关键字super调用父类的方法,既有子类又有父类功能
注意事项 :
注解:@开头 写在方法上,类上,变量上 @ alt+?
不能重写父类私有的方法
权限必须大于等于父类方法的权限
继承中构造方法的执行顺序:
在有子父类继承关系的类中,创建子类的对象,调用子类的构造方法
如果子类构造方法的第一行代码没有调用父类的构造方法,则默认调用父类的无参构造,
肯定会先执行父类的构造,因为先给父类的成员变量进行初始化,子类可能会使用到
我们可以使用super() 在子类的构造方法的第一行中调用父类的构造方法
eg : 我是父类无参---子类有参---子类无参构造
注:子父类中不能被继承的两个:1. 构造方法,2.私有
this 和super 的区别:
this : 当前对象的引用
调用子类成员变量;调用子类成员方法;子类第一行调用子类其他构造方法
super : 子类对象的父类引用
调用父类的成员方法;在子类构造方法第一行调用父类的构造方法
继承优缺点:
优点:提高代码复用性;
提高了代码的可维护性;eg: 遇到bug直接改父类
匿名对象: 没有名字的对象(没有变量引用的对象)
eg : new Student();
匿名对象的应用场景:
当方法只调用一次的时候可以使用匿名对象
注: 匿名对象可以调用并赋值,但是赋值没有意义
eg : method(new Student);
注:可以当作参数进行传递,但是无法在传参之前做其他的事情
final 关键字: 修饰类,成员方法,成员变量
final 所修饰的类:不能被继承,没有子类
final 所修饰的方法: 不能被子类重写
final 所修饰的变量 : 不可以修改,是常量
常量:
自面值常量:1,2,3
自定义常量: 被final 所修饰的成员变量,一旦初始化不可被改写 一般全大写
抽象类的概述:(抽象类都是父类)
abstract :关键字,用于修饰方法和类
eg: abstract class Animal {
public abstract void eat();
}
抽象方法:不同类的方法是相似,但是具体内容不太一样,所以抽取他的声明,没有具体方法体
抽象类:有抽象方法的类必须是抽象类
注意:一个类继承了抽象类必须重写所有的抽象方法,否则就得是抽象类
抽象类的特点:
抽象方法只能在抽象类里面,抽象类和方法必须用 abstract
抽象类不能创建对象(不能实例化)
抽象类中可以有非抽象的方法
抽象类和类的关系也是继承,一个类继承了抽象类,要么重写所有抽象方法,要么自己也是抽象类
抽象类的成员特点:
成员变量:
可以有 成员变量 和 常量
成员方法:
可以有 抽象方法 和 非抽象方法
构造方法 :
可以有构造方法,需要对抽线类的成员变量进行初始化
抽象类的细节:
abstract 不可以和哪些关键字共存?
答: final,private ,static
抽象类有构造函数,可以没有抽象方法
|
|