【编程语言】Java中的类和对象learn by Imooc

 一、什么是类和对象
     * 类是模子,确定对象将会拥有的特征(属性)和方法
     * 类的特点:
     *     类是对象的类型
     *     具有相同属性和方法的一组对象的集合
     * 对象的属性
     *     属性-对象具有的各种特征
     *     每个对象的每个属性都有用的特定值
     * 对象的方法
     *     方法-对象执行的操作(能干什么)
     * 类和对象的关系
     *     类是抽象的概念,仅仅是模板

     *     对象是一个你能够看得到,摸得着的具体实体


二、 如何定义Java的类
     * 1、类的重要性:所有Java程序都已类Class为组织单元
     * 2、什么是类
     *     类是模子,确定对象将会拥有的特征(属性)和方法
     * 3、类的组成:属性和方法
     * 4、定义一个类的步骤
     *     a、定义类名 public class 类名{
     *     b、编写类的属性    //定义属性部分
     *                 属性1的类型
     *     c、编写类的方法    //定义方法部分
     *                 方法1

     */

//1.定义一个类
public class ClassAndObject {
//2.属性(成员方法)有什么
	float screen;
	float cpu;
	float mem;
	//3.方法  干什么
	void call(){
		System.out.println("Telphone有打电话的功能!");
	}
	void sendMessage(){
		System.out.println("screen:"+screen+" cpu:"+cpu+" mem:"+mem+" Telphpne有发短信的功能!");
	}
/**
	 * Java对象
	 * 	使用对象的步骤
	 * 1、创建对象:
	 * 类名 对象名 = new 类名();
	 * ClassAndObjec phone = new ClassAndObject();
	 * 2、适用对象
	 * 引用对象的属性:对象名.属性
	 * phone.screen = 5;//给screen属性赋值5
	 */
public static void main(String args[]){
		//
		ClassAndObject phone = new ClassAndObject();
		phone.call();
		phone.sendMessage();
		//1.给实例变量赋值
		phone.screen = 5.0f;
		phone.cpu = 1.4f;
		phone.mem = 2.0f;
		//2.调用对象的方法
		phone.sendMessage();
	}
}
三、成员变量和局部变量
     *
     * 1、成员变量
     *     在类中定义,用来描述对象将要有什么
     * 2、局部变量
     *     在类的方法中定义,在方法中临时保存数据
     * 局部变量:定义在方法内部->只能在当前方法使用
     * 成员变量:本类方法,其他类的方法->使用
     * 区别:
     *     1)、作用域不同
     * 局部变量的作用域仅限于定义它的方法
     * 成员变量的作用域在整个类内部都是可见的。
     *     2)、初始值不同
     * java会给成员变量一个初始值
     * 不会给局部变量初始值
     *     3)、在同一个方法中,不允许有同名局部变量
     *     在不同的方法中,可以有同名局部变量
     *  4)、两类变量同名时,局部变量具有更高的优先级(就近原则)
   

int var;//成员变量
	void Test(){
		int localVar = 10;//局部变量
		System.out.println("var:"+var);
		System.out.println("localVar"+localVar);
	}
	void Test1(){
		//System.out.println("localVar"+localVar);
	}
	public static void main(String args[]){
		Variable var = new Variable();
		var.Test();
	}
四、构造方法
    1.使用new+构造方法 创建一个新的对象
    2.构造方法是定义在Java类中的一个用来初始化对象的方法
    构造方法与类名同名,且没有返回值
    构造方法的语句格式
    public 构造方法名([可以指定参数]){
            //初始化代码
        没有返回值类型    方法名与类名相同
    }

         //main:
		public static void main(String args[]){
			//通过无参的构造方法可以创建对象
			ConstructionMethod phone = new ConstructionMethod();
			//通过有参的构造方法也可以创建对象,并给对象中的实例变量赋初值
			ConstructionMethod phone2 = new ConstructionMethod(5.0f, 1.4f, 2.0f);
			}
	//无参构造方法:
		public ConstructionMethod(){
			System.out.println("无参构造方法被执行了");
			}
	//有参构造方法:
		public ConstructionMethod(float newScreen,float newCpu,float newMem){
			screen = newScreen;
			cpu = newCpu;
			mem = newMem;
			System.out.println("有参的构造方法被执行了!");
		}

 * 5.没有指定构造方法时,系统会自动添加无参构造方法
 * 6.当有指定构造方法,无论是有参、无参的构造方法,系统都不会自动添加无参的构造方法
 * 7.构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法

 * 8.构造方法不但可以给对象的属性赋值,还可以保证给对象的属性赋一个合理的值


五、静态变量、静态方法        

public class StaticVariable {
	//static修饰的变量为静态变量,所有类的对象共享hobby
	static String hobby = "原本imooc";
	//使用static关键字声明静态方法
	public static void print(){
		System.out.println("静态方法");
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/**
		 * 静态变量:
		 * Java中被static修饰的成员成为静态成员或类成员。它属于整个类所有
		 * 静态成员可以使用类名直接访问,也可以使用对象名进行访问
		 * 使用static可以修饰变量、方法和代码块
		 */
		//静态变量可以直接使用类名来访问,无需创建类的对象
		System.out.println(StaticVariable.hobby);
		
		//创建类的对象
		StaticVariable svar = new StaticVariable();
		System.out.println(svar.hobby);
		//使用对象名的形式修改静态变量
		svar.hobby = "已修改hello";
		//再次使用类名访问静态变量,值已被修改
		System.out.println(svar.hobby);
		
		/**
		 * 静态方法:
		 * 直接使用类名调用静态方法
		 * 也可以通过对象名调用,当然推荐使用类名调用的方式
		 */
		//类名调用静态方法
		StaticVariable.print();
		//对象名调用
		StaticVariable svar_2 = new StaticVariable();
		svar_2.print();
	}

}

public class StaticSet {
	/**
	 * 
	 * Java中的Static使用静态初始化块
	 * 通过初始化块进行数据赋值
	 * 类的声明中,可以包含多个初始化块,当创建类的实例时,就回依次执行这些代码块
	 * 静态初始化块(使用static修饰初始化块)
	 * 静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量
	 * 静态初始化块先执行——>普通初始化块-->构造方法
	 */
	int name1;
	int name2;//定义一个成员变量
	static int name3;
	public StaticSet(){		
		//通过初始化块为成员变量赋值,构造方法
		{
			name1 = 91;
			System.out.println("通过构造方法为变量name1赋值。");
		}
	}
	//初始化块
	{
		name2 = 92;
		System.out.println("通过初始化块为变量name2赋值");
	}
	static{//静态初始化块
		name3 = 93;
		System.out.println("通过静态初始块为静态变量name3赋值");
	}
	public static void main(String args[]){
		StaticSet sSet = new StaticSet();
		System.out.println("name1:"+sSet.name1);
		System.out.println("name2:"+sSet.name2);
		System.out.println("name3:"+name3);
		StaticSet sSet2 = new StaticSet();
	}


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。