代码块分为四种
1.局部代码块(想到方法)
书写位置:方法中
作用:限制作用域
2.构造代码块
书写位置:类中方法外
代码的执行顺序:
1.系统调用的
2.只要创建对象 就会调用
3.构造代码块 在 构造方法之前被调用
作用:当你有方法 需要每个对象都调用的时候
可以将这个方法 在构造代码块中调用(不常用)
3.静态代码块
使用关键字static 修饰的代码块
位置:类中方法外
调用顺序:
1.随着类的加载而加载
2.只加载一次
3.在构造代码块之前执行
应用场景:
加载驱动(U盘驱动)
4.同步代码块(多线程部分)
public class Demo01 {
public static void main(String[] args) {
//jubu();
Person p1 = new Person();
// p1.name = "彭前";
// p1.sayHi();
Person p2 = new Person("萧峰",10);
// p2.sayHi();
}
private static void jubu() {
{
//局部代码块可以 限制变量的作用域
int num = 10;
}
//System.out.println(num);
}
}
// 暴力调试法
// 小黄鸭调试法(逻辑调试)
class Person{
String name;
int age;
//无参和有参的构造方法
public Person(){
System.out.println("我是无参的构造方法");
}
public Person(String name,int age){
this.name = name;
this.age = age;
System.out.println("我是有参的构造方法");
}
//介绍自己方法
public void sayHi(){
System.out.println(name+".."+age);
}
//吃
public void eat(){
System.out.println("人--吃饭");
}
//构造代码块
{
this.eat();
System.out.println("我是构造代码块");
}
//静态代码块
static {
System.out.println("我是 静态代码块");
}
}
继承!
好处:
1.减少代码量(代码的复用性)
2.提高工作效率
3.增强类与类之间的关系(让类和类之间的关系更紧密)
弊端:
1.调高内聚 希望一个类中 方法与方法之间联系加强
2.降低耦合 希望类与类之间 减少联系
java中只允许单继承(类与类)(可以通过接口实现多继承)
java中还允许多层继承(继承链)
* 当你想只使用共有方法和属性 使用哪个类的对象?
* 一般选择 使用继承链 最顶端的类
* 当你想使用特有方法和属性 使用哪个类的对象?
* 一般选择 使用继承链 最末端的类
*
* 如果一个类没有写继承 那么这个类 默认继承 Object类(基类)
public static void main(String[] args) {
DemoA a = new DemoA();
// 当我直接打印对象时候
// 相当于调用的 Object类中 toString方法
// 思考 toString方法有啥用
System.out.println(a);
}
* 继承中的 构造方法
* 注意:构造方法是不能继承的
*
* 当创建子类对象的时候 为了保证继承的完整性
* (不管你在 创建子类对象的时候 使用的是 无参还有有参构造)
* 系统会默认帮你调用 父类中的 无参构造方法
* super 和 this
* super 在子类中代表是 父类的对象
* this 在子类中可以调用子类的属性 和 方法
* (当子类中没有这个属性 或方法的时候 就去父类中寻找 找到就用 没找到就报错)
* 关键字 final(绝育)
* 1.修饰方法 方法不能被重写
* 2.修饰类 类不能被继承
* 3.修饰变量 变量不能修改
* final 修饰引用数据类型
* 不能进行重新指向(地址不能修改)
* 对象中的属性不会影响修改
* 方法重载(Overload)(在一个类中进行) * 方法重写(Override)(前提:至少两个类中 并且还要有继承关系) * 方法的重写 作用:相当于 对 父类的该方法 进行升级 * 重写:跟父类的方法 完全一致