初识 Java 的面向对象思想

摘要: Java 的面向对象思想如此美妙,如此神奇

这篇文章上次修改于 1 年前,可能部分内容已经不适用,如有疑问可询问作者。

初识 Java 的面向对象思想

Java 面向对象之前的代码思想和 C 差不多,这里就不做详细的记录了。

类

这个和 C 语言里面的结构体差不多,里面可以写方法(函数)。

Java 面向对象中重要的东西就是类,类是每一个方法的上级,所有的方法都是写在类里面。写了多少个类,在编译的时候都会产出多少个 class 字节码文件,同时如果想调用这个类里面的方法,那么这个类必须要被实例化,也就是说需要一个变量来承载这个类,例如

JAVA
class Test{
    public void getOut()
    {
        System.out.println("Hello World!");
    }
}
public class HelloWorld{
    public static void main(String[] args)
    {
        Test test = new Test();
        test.getOut();
    }
}
Copy

在这个代码中,我们有一个 Test 类和 HelloWorld 这个类,在 main 方法里面,我们实例化了 Test 这个类,同时使用了这个类里面的方法 getOut() 输出了 Hello World!,调用通过 test.getOut()

方法

这是所有的代码实现都是通过方法来实现的,方法(函数)里面书写的执行代码块。

逻辑的实现都在方法里面。

普通方法

例如

JAVA
class Test{
    int age;
    public int getAge()
    {
        return age;
    }
    public void setAge(int age)
    {
        this.age = age;
    }
}
Copy

普通方法可以规定访问权限,同时可以规定数据的返回类型,例如 getAge() 是一个整型方法,方法返回整型。但是 setAge(int age) 是一个无返回方法,this 这个关键词指代的是类里面的成员变量,这样方便对照参数表。

构造方法

这个方法可以不规定返回类型,例如

JAVA
class Test{
    Bike1(){
        System.out.println("Bike is created");
    }

    public static void main(String args[]) {
        Bike1 b = new Bike1();
    }
}
Copy

私有成员变量

针对私有成员变量,我们可以通过本类里面的方法来进行修改,例如:

JAVA
class Student{ 
    private String name;
   private String sex;
   private int age;
   public int getAge()
   {
      return age;
   }
   public String getName()
   {
       return name;
   }
   public String getSex()
   {
       return sex;
   }
   public void setAge(int age)
   {
       this.age=age;
   }
   public void setName(String name)
   {
       this.name=name;
   }
   public void setSex(String sex)
   {
       this.sex=sex;
   }
   public void setAll(String sex, String name, int age)
   {
       setAge(age);
       setName(name);
       setSex(sex);
   }

}
public class _class {
    public static void main(String[] args)
    {
        Student student=new Student();
        student.setAge(18);
        student.setName("Nike");
        student.setSex("女");
         System.out.println("name is:"+student.getName()+", age is:"+student.getAge()+", sex is:"+student.getSex());
        student.setAll("woman","才与刘弘",19);
        System.out.println("name is:"+student.getName()+", age is:"+student.getAge()+", sex is:"+student.getSex());

    }
}
Copy

封装

针对上面的例子,访问私有成员变量的时候,我们可以在类里面写好方法,让类里面的方法去操作这个成员变量,防止成员变量被其他非本类里面的操作意外修改。

继承

继承性,其实就是类似 C语言结构体套娃,结构体套结构体,同样,这个类里面套一个类,例如

JAVA
class Test{
    public void Say()
    {
        System.out.println("Hello World!");
    }
    public void Out()
    {
        System.out.println("Test not OK!");
    }
}
class TestOK extends Test{
    public void Out()
    {
        System.out.println("Test is OK!");
    }
    
}
public class TEST{
    public static void main(String[] args)
    {
        TestOK test = new TestOK();
        test.Say();
        test.Out();
    }
}
Copy

在这里 TestOK 这个类继承了 Test 类里面的成员方法,实例化 TestOK 这个类就可以调用 Test 类里面的方法;同时这里还把父类 Test的 Out()方法重写了,这是一种多态的表现。