二、面向对象程序设计 - 类的引入

在这里插入图片描述

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 {
        // 静态块
        // 实例化第一个对象前,执行;只执行一次
    }
}
发布了29 篇原创文章 · 获赞 9 · 访问量 1887

猜你喜欢

转载自blog.csdn.net/m0_46291920/article/details/104521496