OOP——Object Oriented Programming是java最大的特点,而且他不和C++一样,java属于彻头彻尾的面向对象,每一个文件都是以类的形式出现,main函数也包括在一个大类中。
1、关于类的声明定义如下模板:
class User{
String name; //成员变量
int age;
public void show()
{
System.out.println("用户姓名是:"+name+",年龄是:"+age); //成员方法
}
}
2、成员变量的修饰符:
static:表示一个类成员静态变量,它仅在生成第一次对象时分配内存,相当于全局变量,所有实例对象共享一个,会互相改变影响。属于类,可通过类名直接访问。
final:表示一个常量,只能被引用不能被改变,相当于c++中的const。
3、成员方法:注意必须属于某个类,不能定义一个不属于任何类的方法。修饰符:
static:静态方法,可通过类名直接调用,当然也可以由实例对象调用。
abstract:抽象方法,只有方法声明,没有方法体。
final:最终方法,在子类中不能被覆盖。
4、类的构造方法
名字与类名一致,在创建对象时用来对成员变量进行初始化。注意名字要和类名一样,而且不能有返回值,特别要注意的是,前面连void也不能加。
此外,构造方法可以重载(即名相同,参数不同)。
5、对象的创建
<类名> <对象名> = new 构造方法();
如:
User usr1 = new User(); //默认构造方法
User usr2 = new User("sun",28); //自定义构造方法(重载)
6、类的封装权限
类的访问权限只有两种,默认和public。在同一个文件中,只能有一个是public公共类,而且要求这个类的名字必须与文件名相同,main方法也要在公共类中。默认的权限不能超过包。main方法的编写:public static void main(String argv[]){}
成员的访问权限:
public:可以被任何其他所有类访问。
protected:可以被同一包中的类和其他包中该类的子类访问。
默认:能被同一包中的类访问。
private:只能被同一包中的成员访问。
7、类的继承
class subclassname extends superclassname{}
和C++不同的是,java不支持多重继承,子类只能有一个父类。
关于方法的重载和覆盖:
重载:同一类中,相同名字不同参数。
覆盖:父类和子类,子类方法覆盖父 类方法,名字和参数都应该相同。
8、抽象类
首先理解之定义方法声明,不一定方法实现的思想。
定义方式是在类名和方法名之前加上abstract:
abstract class Student{
int stu_id;
void set id(int id){
stu_id = id;
}
//定义抽象方法
abstract void show id(); //一定要注意分号,表示结束了,没有具体的方法体
}
注意到,抽象类中也可以有非抽象方法,但有抽象方法的类就是抽象类。如果它的子类没有将抽象方法进行具体的实现,那么子类也变成抽象类了。
9、最终类
类名之前加上final,表示这个类不能被继承,可以避免开发者编写的类被别人继承后修改。