JavaSE之面向对象编程-类与对象(下)

类与对象(下)

本篇由一道阿里的Java校招笔试题开始 ~

public class HelloA {
    //构造方法
    public HelloA(){
        System.out.println("Hello A!父类构造方法");
    }
    //非静态代码块
    {
        System.out.println("i'm A class.父类非静态代码块");
    }
    //静态代码块
    static{
        System.out.println("static A 父类静态代码块");
    }
}
class HelloB extends HelloA {
    //构造方法
    public HelloB(){
        System.out.println("Hello B! 构造方法");
    }
    //非静态代码块
    {
        System.out.println("i'm B class.非静态代码块");
    }
    //静态代码块
    static{
        System.out.println("static B 静态代码块");
    }
    public static void main(String[] args) {
        System.out.println("---start---");
        new HelloB();
        new HelloB();
        System.out.println("---end---");
    }
}

上述代码输出结果:

static A 父类静态代码块
static B 静态代码块
---start---
i'm A class.父类非静态代码块
Hello A!父类构造方法
i'm B class.非静态代码块
Hello B! 构造方法
i'm A class.父类非静态代码块
Hello A!父类构造方法
i'm B class.非静态代码块
Hello B! 构造方法
---end---

相关代码展示如下:

1、普通代码块

public class Test{
    public static void main(String[] args) {
        { //直接使用{}定义,普通方法块
            int x = 10 ;
            System.out.println("x = " +x);
        }
        int x = 100 ;
        System.out.println("x = " +x);
    }
}

2、构造块

class Person{
    { //定义在类中,不加任何修饰符,构造块
        System.out.println("1.Person类的构造块");
    }
    public Person(){
        System.out.println("2.Person类的构造方法");
    }
}
public class Test{
    public static void main(String[] args) {
        new Person();
        new Person();
    }
}

3、非主类中的静态代码块

class Person{
    { //定义在类中,不加任何修饰符,构造块
        System.out.println("1.Person类的构造块");
    }
    public Person(){
        System.out.println("2.Person类的构造方法");
    }
    static { //定义在非主类中的静态块
        System.out.println("3.Person类的静态块");
    }
}
public class Test{
    public static void main(String[] args) {
        System.out.println("--start--");
        new Person();
        new Person();
        System.out.println("--end--");
    }
}

4、继承的实现

class Person{
    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;
    }
}
class Student extends Person{ 
	//定义了一个子类
}
public class Test {
    public static void main(String[] args) {
        Student student = new Student();
        student.setName("Steven");
        student.setAge(18);
        System.out.println("姓名:"+student.getName()+",年龄:"+student.getAge());
    }
}

5、方法覆写

class Person{
    public void print(){
        System.out.println("1.[Person]类的print方法");
    }
}
class Student extends Person{
    public void print(){
        System.out.println("2.[Student]类的print方法");
    }
}
public class Test{
    public static void main(String[] args) {
        new Student().print();
}    

猜你喜欢

转载自blog.csdn.net/Hannah_Hsq/article/details/84898075
今日推荐