JAVA之类和对象

一:对象的概念:

    我们都说万物皆对象,客观存在的事物都是对象。

二:什么是面向对象?

     把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。

既然在这里提到了类,那么类究竟是什么呢?接下来我们就来说什么是类。

三:什么是类?

    简单点来说,类就是模子,确定对象将会拥有的特征(属性)和行为(方法)。

类的特点:1):类是对象的类型

                     2):具有相同属性和方法的一组对象的集合

类中具有属性和方法,那么接下来我们就来说一说类的属性和方法。

四:对象的属性--对象具有的各种特征。

    就比如说手机有屏幕大小,CPU内存大小,内核等特征,也就是手机的属性

五:对象的方法--对象执行的操作

     比如说手机又发短信,打电话的功能。那么发短信和打电话就是手机的方法

六:类和对象有什么区别?

   类是抽象的概念,仅仅是一个模板,对象是一个实体。比如"手机"对象是一个你能够看得着,摸得到的实体。


下面,我们就看如何用代码来创建对象和类以及对象的属性和方法。

---------------------------------------------------------------------------------------------------------------------------------

1:定义类

    主要包括三个步骤: 定义类名,编写类的属性,编写类的方法    

public class Telphone{//定义类名
    //属性
    float screen;
    float cpu;
    float memory;
    //方法
    void call(){
      System.out.println("有打电话的功能");
    }
    void sendMessage(){
      System.out.println("screen:"+screen+",cpu:"+cpu+",memory"+memory+",并且有发短信的功能");
    }
}

2:使用对象

     使用对象有两个步骤:

        创建对象: 类名  对象名=new 类名();

        使用对象 :对象名.属性/方法

public class InintTelpone{
     public static void main(String[] args){
         //创建对象
         Telphone phone=new Telphone();
         //给实例变量赋值
         phone.screen=254.2f;
         phone.cpu=1.4f;
         phone.memory=2.0f;
         //调用实例变量的方法
         phone.sendMessage();
     }
}

七: 成员变量和局部变量的区别

1:作用域的不同:

           1): 局部变量的作用域仅限于用在定义他的方法中

           2): 成员变量的作用域在整个类内部都是可见的。

:2:初始值不同:

           1): java会给成员变量一个初始值

            2):java不会给局部变量一个初始值

在同一个方法中不允许有同名的局部变量,但是在不同的方法中可以允许有同名的局部变量。并且如果局部变量跟成员变量重名,则局部变量的优先级更高。

public class Telphone {
	float screen;
	float cpu;
	float mem;
	float var;
	void call(){
		int localVar=2;
		System.out.println(var);
		System.out.println(localVar);
		System.out.println("telephone 可以用来打电话");
	}
	void sendMessage(){
		int localVar=3;
		System.out.println(localVar);
		System.out.println(var);
		System.out.println("screen:"+screen+",cpu:"+cpu+",mem:"+mem+"Tel可以用来发短信");
	}
}
public class InitTelphone {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Telphone phone=new Telphone();
		phone.screen=2.0f;
		phone.cpu=1.4f;
		phone.mem=8.0f;
		phone.call();
		phone.sendMessage();
	}

}

运行结果为:

八:静态变量

     我们知道,我们可以基于一个类创建多个对象,每个对象的属性都是独立的。然而,在有的时候,我们希望该类的所有对象都能够共用一个成员,此时就需要定义静态变量,用static修饰。

    静态的东西在对象产生之前就已经存在了,所以静态的东西与对象无关,静态变量在类被加载时就执行了,在编译实现时静态变量只有一份备份。

    静态变量可以用类名来访问,也可以用对象名来访问。

public class HelloWorld {
        //设置静态变量
	static String className = "高二一班";
	public static void main(String[] args) {
	    //通过类名来访问
	    System.out.println(HelloWorld.className);
	    //创建新的对象
	    HelloWorld hello=new HelloWorld();
	    //使用对象名来访问
	    System.out.println(hello.className);
	    //使用对象名的形式来修改静态变量的值
	    hello.className="高二二班";
	    //再次使用类名来访问静态变量,值已经被改变
	    System.out.println(HelloWorld.className);
	}
}

    运行结果:

    

九:实例变量

    实例变量是类声明中没有使用static修饰声明的一个字段,实例变量是在类实例化时才会分配内存,因此同一个实例变量在类的不同实例化而产生的对象中是不同的。

十:构造方法

构造方法是定义在java类中的一个用来初始化对象的方法。并且构造方法的名称跟类名相同没有返回值。

构造方法的几个特点:

        1:当没有指定构造方法的时候,系统会默认的调用构造方法。

        2:当有指定构造方法,无论是有参的还是无参的,都不会自动添加无参的构造方法

         3:构造方法的重载跟普通方法的重载一样。

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

无参的构造方法:

public class Telphone {
	public Telphone(){
		System.out.println("无参的构造方法");
	}
}

	public static void main(String[] args) {
		Telphone phone=new Telphone();
	}
}

   有参的构造方法:

public class Telphone {
	float cpu;
	float screen;
	public Telphone(float newScreen,float newCpu){
		screen=newScreen;
		cpu=newCpu;
		System.out.println("有参的构造方法");
	}
}

	public static void main(String[] args) {
		Telphone phone=new Telphone(2.0f,1.4f);
	}
}

十一:静态方法

    静态方法的使用需要注意以下几点:

    1:静态方法中可以直接调用同类中的静态变量,但是不可以直接调用非静态成员。

    2:如果希望能够调用非静态成员,可以通过创建类的对象,然后通过对象来访问非静态成员。

    3:在普通方法中,可以直接访问同类中的静态和非静态成员

    4:静态方法中不可以直接调用非静态方法,需要通过类创建的对象来访问。

        总结起来就是,在静态方法中不可以使用非静态的成员和方法,因为非静态的成员和方法是在实例化的时候才会分配空间,所以要通过类创建的对象来访问

public class HelloWorld {
    
    // 定义静态变量score1
    static int score1 = 86;
    // 定义静态变量score2
    static int score2 = 92; 

    // 定义静态方法sum,计算成绩总分,并返回总分
	public  static   int sum() { 
          return score1+score2;
	}
	public static void main(String[] args) {  
                // 调用静态方法sum并接收返回值
		int allScore = HelloWorld.sum();
		System.out.println("总分:" + allScore);
	}
}

十二:静态初始化块

      静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量

public class HelloWorld {
    int num1;
    int num2;
    static int num3;
  //通过构造方法初始化num1;
    public HelloWorld(){
    	num1=1;
    	System.out.println("通过构造方法给num1赋值");
    }
  //通过代码块给num2赋值
    {
    	num2=2;
    	System.out.println("通过代码块给num2赋值");
    }
  //通过静态代码块给num3赋值
    static {
    	num3=3;
    	System.out.println("通过静态代码块给num3赋值");
    }
    void show(){
    	System.out.println("num1:"+num1+",num2:"+num2+",num3:"+num3);
    }
    public static void main(String[] args) {
		HelloWorld hello=new HelloWorld();
    	hello.show();
	}
}

运行结果为: 

  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值