常见代码块应用
- 局部代码块
 在方法中出现,限定变量的生命周期
- 构造代码块(初始化块)
 在类中方法外出现,多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,在调用构造方法前执行
- 静态代码块
 在类中方法外出现,加上static修饰,用于给类初始化,在加载的时候就执行,只执行一次
练习代码
public class Demo1_Code {
    public static void main(String[] agrs) {
        {
            int a = 10;
            System.out.println(a);  // 局部代码块:限定变量的生命周期
        }
        Students s1 = new Students();  //调用空参构造
        s1.setName("张三");
        s1.setAge(27);
        System.out.println(s1.getName() + "---" + s1.getAge());
        System.out.println( "--————————————————————————————————————--" );
        Students s2 = new Students("李四",26);
        System.out.println(s2.getName()+"----"+s2.getAge());
    }
    static {   //静态代码块:类中方法外出现,加上static修饰,用于给类进行初始化,在加载的时候就执行,并且执行一次
        System.out.println("我是静态代码块");
    }
}
class Students {
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    {   //构造代码块(初始化块):在类中方法外出现,多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,且在构造方法前执行
        System.out.println("我是构造代码块(初始化块)");
    }
    public Students() {          //空参构造
        System.out.println("空参构造");
    }
    public Students(String name, int age) {               //有参构造
        this.name = name;
        this.age = age;
        System.out.println("有参构造");
    }
}

面向对象——继承
继承:让类和类之间产生关系,子父类关系
继承的好处:
- 提高代码的复用性
- 提高代码的维护性
- 让类与类之间产生关系,是多态的前提
继承的弊端:类的耦合性增强了
开发的原则:高内聚,低耦合
耦合:类与类的关系
内聚:自己完成某件事的能力
Java中类的继承特点
- Java只支持单继承,不支持多继承。一个子类只能有一个父类
- Java支持多层继承(如grandpa—father—son)
- 如果想用这个体系的所有功能用最底层的类创建对象
- 如果想看这个体系的共性功能看最顶层的类
Java共性功能指的是Java语言中所有类都具备的一些基本功能,例如继承、封装、多态等,继承允许类之间的代码共享和重用;封装则使得类的内部实现细节对外部不可见,从而提高了代码的安全性和可维护性;而多态则使得不同的对象可以对同一消息作出不同的响应,从而提高了代码的灵活性和可扩展性。这些共性功能是Java语言的核心特性之一,也是Java语言在软件开发领域广泛应用的重要原因之一。
练习代码
public class extendsTest {
    public static void main(String[]agrs){
        cat c = new cat();
        c.setName("咪咪");
        c.setColor("白色");
        c.eat();
        System.out.println(c.getColor()+"的猫咪叫"+c.getName());
    }
}
class animal{
    private String name;
    private String color;
    public animal() {                                   //空参构造
    }
    public animal(String name, String color) {          //有参构造
        this.name = name;
        this.color = color;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }}
    class cat extends animal{//继承父类的属性,并添加特有属性
        public void eat(){
            System.out.println("猫吃鱼");
        }
    }
    class dog extends animal{}

继承需要注意
- 子类只能继承父类所有非私有的成员(成员方法和变量)
- 子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法
- 不要为了部分功能去继承
什么时候使用继承?
如果有两个类A、B,只有他们符合A是B的一种,或者B是A的一种,就可以考虑使用继承


















