Java代码块与Java继承

来源:互联网 发布:网络安全工程师招聘 编辑:程序博客网 时间:2024/06/10 15:44

一.局部代码块

1)位置:方法中

2)作用:限定局部变量的声明周期。因为局部代码块可以产生不同的作用域

public class Demo01 {public static void main(String[] args) {{ int num=10; System.out.println(num);}}

二.构造代码块

1)位置:在类中,方法外

2)定义:直接在类中编写代码块,称为构造块

3)代码

 class Demo{ } {System.out.println("构造代码块") ; }

注意:构造块优先于构造方法执行,且执行多次

三.静态代码块

1)定义:直接用static关键字来声明的

2)位置:在类中,方法外

3)特点:只加载一次,随着类的加载而加载

4)应用场景:用来加载驱动

5)代码:

class Demo{ static{ System.out.println("静态代码块") ; }

四.三个代码块的执行

class Student {        static {            System.out.println("Student 静态代码块”);3         }        {            System.out.println("Student 构造代码块”);4 6        }        public Student() {            System.out.println("Student 构造方法”);5 7        }    }    class Demo2_Student {        static {            System.out.println("Demo2_Student静态代码块”);1        }        public static void main(String[] args) {            System.out.println("我是main方法”);2            Student s1 = new Student();            Student s2 = new Student();        }    }

执行顺序:

父类静态代码块→子类静态代码块→父类构造代码块→父类构造方法→子类构造代码块→子类构造方法

1:Demo2_Student静态代码块

2:我是main方法

3.Student 静态代码块

4.Student 构造代码块

5.Student 构造方法

6.Student 构造代码块

7.Student 构造方法

五.继承(用 extends关键字继承)

1)定义:

把多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么这个多个类无需再定义这些属性和行为,只要继承那个类就行了。

2)特点: 1.Java只支持单继承,不支持多继承。 (就是说,一个类继承了一个父类,不允许在继承别的父类)

2.Java支持多层继承。

class DemoA {//爷爷类    String name; //名字    public void sayHi() {    System.out.println(name);    }}class DemoB extends DemoA{//父类}class DemoC extends DemoB{//子类}

3)优点

1.提高代码的复用性

2.让类与类之间产生联系

3)形式:

class 子类的类名 extends 父类的类名{

}

4)代码

public class Demo02 {    public static void main(String[] args) {        Cat cat = new Cat();         cat.color="黑猫";         cat.leg=4;         cat.sayHi();    }}  //写一个动物类class Animal{    String color;    //颜色    int leg ;       //腿数    String name;     public void sayHi() {    System.out.println(color+"---"+leg);    }}    class Cat extends Animal{    }    class Dog extends Animal{    }

六.继承中this和super

1)应用场景

1.当子类和父类出现同名的成员变量和成员方法时,用super2.当子类要调用父类构造函数时,可以用super

2)区别

1.成员变量(成员变量同名)

this.num; 这个是本类的成员变量super.num 这个是父类的成员变量

2.构造方法(注意 继承不能继承父类的构造函数)

public Student(String name,int age) {//本类的构造方法     //调用 父类的 有参构造方法     super(name,age);     }

3.成员方法(成员方法名相同)

class Father{      public void siri() {          System.out.println("我能说英文");      }  }  class Son extence Father{        public void sc(){//本类的成员方法            super.siri();//父类的成员方法        }  }

七.方法的重写

1.定义

子类中出现与父类一模一样的方法时(方法名相同)

2)应用场景

当子类需要父类的功能,而功能主体子类有自己的功能时,可以重写父类中的方法,这样,既继承了父类的功能,又定义了子类特有的内容。

3)代码

class Ios7{      public void siri() {          System.out.println("我能说英文");      }  }class Ios8 extends Ios7{    //注解 @Override 标识着这个方法是重写父类的方法     @Override    public void siri() {        // TODO Auto-generated method stub         //这里调不调用父类的方法 要根据实际开发来写        super.siri();        System.out.println("功能升级 我会说中文了");    public void sc() {        super.siri();     }   }

八.final关键字(修饰类,成员变量,成员方法)

1.特点

1)修饰类的时候,该类不能被继承

2)修饰成员变量的时候,该成员变量不能被修改,变成常量

注:用final修饰的变量的命名规则:

名字全部大写,多单词用下划线分开 MAX_VALUE

final修饰成员变量,必须初始化,初始化有两种

1)直接赋初值

2)构造方法中赋值

final int num;    public Team() {        num=10;    }

3)修饰成员方法的时候,该成员方法不能被重写

原创粉丝点击