在来到黑马学习后,我每天不停的学习,不停的进步,有许多不懂的也在老师的指导下有所解惑.
在这里学习的每一天都感觉自己过的很充实,接下来就说一说这段时间的所学的一些知识.
Static
Static 静态关键字(当多个对象中需要有数据被共享的时候,那么可以使用该static关键字)
用来修饰成员变量和成员方法
特点: 被所有的对象所共享;
可以直接使用类名来调用.
如先定义好了一个学生类Student,然后类中有成员static Stirng graduateFrom;
在测试类中即可以 Student.graduateFrom = “传智播客”;
静态所修饰的成员加载优先于对象
即随着类的加载而加载
例子:
有个Student类,有成员 String name;
int age;
static String graduateFrom;
有方法 public static void sleep() {}
public static void eat () {
System.out.print(name); 报错,因为name不是静态
System.out.print(garduateFrom); 可以
sleep(); 可以
play(); 不可以
}
public void play() {
System.out.print(graduateFrom);
eat();
}
在静态方法中没有是否有this对象?
在静态方法中没有this对象,因为静态方法随着类的加载而加载,优先于所有对象.
优点:
对对象的共享数据提供单独空间的存储,节省空间,没有必要每一个对象都存储一份.
可以直接被类名调用,不用在堆内存创建对象.
缺点:
访问出现局限性.(静态虽好,但只能访问静态)
Math的常用api:
math.pi; math.abs( ); math.ceil( ); math.floor( ); math.round( ); math.max(a,b); math.min(a,b); math.pow(a,b); math.random();
利用Math.random();获得1-10的整数;
int a = (int)(Math.random() * 10 ) + 1 ;
继承
继承:从多个类中抽取共性的内容做为一个父类,让其他类作为子类去继承父类获取到父类的成员.
继承的特点: 只支持单一继承.
支持多层继承.
一个子类只能有一个父类,但是可以多层继承即可以有爷爷
继承中成员变量的特点:
子类能获得父类非私有的成员变量,当子类和父类成员变量相同用子类的成员变量,不同的直接使用父类的成员变量.
继承中成员方法的特点
子类能使用父类的成员方法,当子类的成员方法和父类的成员方法名字相同时会发生重写.
方法重写的应用场景:
当父类的方法不能完全满足子类使用的时候,既可以保留父类的功能(沿袭、传承),还可以有自己特有的功能
方法重写的注意事项:
方法重写不能重写父类私有的方法;
权限必须大于等于父类方法的权限
重写利用注解@override
继承中构造方法的执行顺序:
子类的所有构造方法没有调用父类中的构造方法,则会在子类中的所有构造方法中的第一行默认添加super();调用父类的空参构造.
因为当我们对子类对象初始化时,必须要先给父类初始化,因为子类可能用到父类的内容.
在子类的构造方法也可以在第一行调用本类的其他构造方法,但是必定有一个构造方法要调用父类的构造方法.
super()和this()只能在构造方法的第一句,且只能存在一个.
Final: 修饰符,可以用于修饰类、成员方法和成员变量
Final所修饰的类不能被继承。
当final修饰方法时,不能被子类重写。如:
Class Animal{
public final void eat () {
System.out.print(“吃东西”);
}
}
Class Dog extends Animal{
Public void eat{ 这里就提示错误了!即不可重写
}
}
Final所修饰的变量是不能被修改的,是常量。
常量:字面值常量:1,2,3…………
自定义常量: 被final所修饰的成员变量,一旦初始化则不可改变
注意:自定义常量必须初始化,可以选择显示初始化(直接赋值)或者构造初始化.
|
|