初识 Java 的面向对象思想
Java 面向对象之前的代码思想和 C 差不多,这里就不做详细的记录了。
类
这个和 C 语言里面的结构体差不多,里面可以写方法(函数)。
Java 面向对象中重要的东西就是类,类是每一个方法的上级,所有的方法都是写在类里面。写了多少个类,在编译的时候都会产出多少个 class 字节码文件,同时如果想调用这个类里面的方法,那么这个类必须要被实例化,也就是说需要一个变量来承载这个类,例如
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();
}
}
在这个代码中,我们有一个 Test 类和 HelloWorld 这个类,在 main 方法里面,我们实例化了 Test 这个类,同时使用了这个类里面的方法 getOut() 输出了 Hello World!,调用通过 test.getOut()
方法
这是所有的代码实现都是通过方法来实现的,方法(函数)里面书写的执行代码块。
逻辑的实现都在方法里面。
普通方法
例如
class Test{
int age;
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
}
普通方法可以规定访问权限,同时可以规定数据的返回类型,例如 getAge() 是一个整型方法,方法返回整型。但是 setAge(int age) 是一个无返回方法,this 这个关键词指代的是类里面的成员变量,这样方便对照参数表。
构造方法
这个方法可以不规定返回类型,例如
class Test{
Bike1(){
System.out.println("Bike is created");
}
public static void main(String args[]) {
Bike1 b = new Bike1();
}
}
私有成员变量
针对私有成员变量,我们可以通过本类里面的方法来进行修改,例如:
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());
}
}
封装
针对上面的例子,访问私有成员变量的时候,我们可以在类里面写好方法,让类里面的方法去操作这个成员变量,防止成员变量被其他非本类里面的操作意外修改。
继承
继承性,其实就是类似 C语言结构体套娃,结构体套结构体,同样,这个类里面套一个类,例如
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();
}
}
在这里 TestOK 这个类继承了 Test 类里面的成员方法,实例化 TestOK 这个类就可以调用 Test 类里面的方法;同时这里还把父类 Test的 Out()方法重写了,这是一种多态的表现。