1. java中的类
C语言是面向过程的 用结构体,可以用,需要参数传递结构体,天然语言缺陷
出一道题:写一个程序,输出张三、李四两个人的姓名
Oop.java
class Person { //习惯大写
String name;
String getname(){
return "guangdong"+name;
}
};
public class Oop { //公共类首字母必须大写和文件名一致
// 一个java文件中只能有一个公共类
public static void main(String args[]){
Person p1 = new Person(); //使用new创建类
p1.name = "zhangsan";
Person p2 = new Person();
p2.name = "lisi";
System.out.println(p1.getname());
System.out.println(p2.getname());
}
}
2. 构造方法
语法
class Person {
String name;
int age;
int money;
public String getName( );
public int getMoney( );
// 构造方法
访问权限 类名称 (类型1 参数1, 类型2 参数2, ...) {
程序语句;
..... // 构造方法没有返回值
}
}
- 构造方法的名字必须和类名字一致
- 创建类的时候,自动执行构造方法
- 没有返回值类型
- 构造方法可以方法一样可以重载
- this表示当前对象或者当前类的属性,等号右边的是参数
举例:
class Person { //习惯大写
String name;
String getname(){
return "guangdong"+name;
}
public Person(String n){ //构造方法名字和类名一致
this.name = n;
}
};
public class Oop { //必须大写和文件名一致
public static void main(String args[]){
Person p1 = new Person("xiaoer"); //使用new创建类
Person p2 = new Person("xiaosan");
System.out.println(p1.getname());
System.out.println(p2.getname());
}
}
3. 类中的static关键字
举例
class Person { //习惯大写
static int cnt; //static修饰变量,表示属于类,不用创建对象
String name;
String getname(){
return "guangdong"+name;
}
public Person(String n){ //构造方法名字和类名一致
cnt++;
name = n;
}
static void printfun(){ //static 修饰方法,表示属于类,不用创建对象就可以调用
System.out.println("this is a method\n");
}
};
public class Oop { //必须大写和文件名一致
public static void main(String args[]){
Person p1 = new Person("xiaoer"); //使用new创建类
Person p2 = new Person("xiaosan");
System.out.println(p1.getname());
System.out.println(p2.getname());
Person.printfun();
System.out.println(Person.cnt);
}
}
- static修饰变量,表示属于类,调用时不需要实例化对象
- static 修饰方法,表示属于类,调用时不需要实例化对象
- 思考:main前边的static 系统不需要实例化公共类,java虚拟机就可以调用公共类中的main
4.构造块
举例
class Person { //习惯大写
static int cnt; //static修饰变量,表示属于类,不用创建对象
String name;
String getname(){
return "guangdong"+name;
}
{ //类中用大括号括起来的就是构造块,每次创建类的时候被调用,构造方法之前执行
cnt++;
}
public Person(String n){ //构造方法名字和类名一致
name = n;
}
static void printfun(){ //static 修饰方法,表示属于类,不用创建对象就可以调用
System.out.println("this is a method\n");
}
};
public class Oop { //必须大写和文件名一致
public static void main(String args[]){
Person p1 = new Person("xiaoer"); //使用new创建类
Person p2 = new Person("xiaosan");
System.out.println(p1.getname());
System.out.println(p2.getname());
Person.printfun();
System.out.println(Person.cnt);
}
}
- 类中用大括号括起来的就是构造块,每次创建类的时候被调用,构造方法之前执行
- 以下是静态代码块
class Person {
static {
// 静态块
// 实例化第一个对象前,执行;只执行一次
}
}