Java :类与对象

Java :类与对象,第1张

Java :类与对象

目录

1.1类

1.1.1类的定义

1.2对象

        1.2.1创建对象

           1.2.2 实例化对象

                1.2.3创建多个对象

                1.2.4对象创建的问题 (注意)

        1.2.4基本数据变量与引用数据类型变量的区别

        1.2.5静态变量


面向对象:

        什么是对象:对象是对事物的抽象,万物皆对象(具体看得见摸得着的具体存在)。

1.1类

        类是对对象的抽象和归纳。我们自然而然的对周围的事物进行分类。分类所依据的原则是抽象的,及抽象的反映与当前目标有关的本质特征,而忽略那些与当前目标无关的非本质特征,从而找出事物的共性,把具有共性的事物归为一类,得出一个抽象的概念———类。

        类与对象的关系:

                                类:抽象的概念,集合,数据类型。

                                对象:具体某一个,个体, 实例。

1.1.1类的定义

        一个Java源程序文件往往是由许多个类组成的。从用户的角度看,Java源程序中的类可以分为两中。

      

        ·系统定义的类:即Java类库。它是系统定义好的类,类库是Java语言的重要组成部分。

        ·用户自己定义的类:系统定义的类虽然实现了许多常见的功能,但是用户程序仍需要针对特定问题的特定逻辑来定义自己的类。

        Java程序中,用户自己定义的类的格式:

[修饰符] class 类名 [extends 父类名] [implements 类实现的接口列表]

{

        数据成员

        成员方法
}

        其中[]括起来的为内容为可选项。关键字class是类定义的开始。 关键字extends 指的是该类是子类,它的父类名紧随其后,子类和父类之间有继承的关系。关键字 implements 指明该类实现的接口,后跟接口名列表。父类不可以超过一个,而接口可以有多个。

        修饰符包括:

  1. public 访问控制符:指明该类是公共类,可以被其他任意类访问其数据成员和成员方法。
  2. 默认访问控制符:即不写访问控制符,表示该类只能被本包中的类访问,不能使用import 语句被引入
  3. abstract 修饰符:指明该类是抽象类,即不能被实例化,也就是不能用它来创建对象。定义它的主要目的是用它来创建字类。
  4. final 修饰符:指明该类是最终类,即不能用它来创建子类。

数据成员(属性):用来指明类的静态特征。

成员方法:用来指明类的动态行为。

//对person 类的描述
class Person{                //class 指出这是一个类,Person是类名
    String name;            //姓名
    int height;             //身高
    int weight;             //体重
    public void run(){      //定义一个ren()方法
    ...
    }
    public void play(){     //定义一个play()方法
    ...
    }

}

        上述代码中,name、height、weight是数据成员 ,

                              public void run(){}、public void play(){}是成员方法。

1.2对象

        类是对象的模板,对象是类的实例, 定义类后,就可以利用类来创建对象。创建对象包括声明对象、建立对象以及初始化对象等过程。 创建完对象后就可以使用对象了。

        1.2.1创建对象

               类名.对象名 = new 构造方法();

           1.2.2 实例化对象

                        属性与方法的调用:

                        对象名.属性

                        对象名.方法

               属性:

                        系统会分配默认值。

                        引用类型的数据默认值null

                        int 默认值为0         

                        char默认值为 空字符

                        double默认值为 0.1

                        Boolean默认值为 false

代码如下:

public class Person {
	String name;
	int height;
	int weight;
	public void run() {
		System.out.println("跑步。。");
	}
	public void play() {
		System.out.println("写代码。。");
	}
	
}
public class Test {

	public static void main(String[] args) {
		Person p = new Person();//创建对象,对象的名字为p
		
		System.out.println(p.height);
		p.height = 170;	//给属性height赋值
		System.out.println(p.height);//复制后再输出
		
		System.out.println(p.weight);
		p.weight = 120;//给属性weight赋值
		System.out.println(p.weight);//复制后再输出
		
		System.out.println(p.name);
		p.name = "张三";//给属性name赋值
		System.out.println(p.name);//复制后再输出
		
		p.play();
		p.run();
		

	}

}

        因为属性是一个值,所以属性是要输出的,否则编译器会报错。

        上述程序中包含有两个类,其中Test是主类,它的唯一的目的就是测试类Person。当运行程序时Java运行系统就会调用这个主类的main方法。(main方法是程序运行的入口,一个程序只能有一个main方法。)

        可以将两个类放在同一个文件中,但是文件中只能有一个类(含有main方法的类)是公共(public)类。此外公共类必须与文件同名。

执行结果为:

                1.2.3创建多个对象

                        创建调用类Test1,调用Person。代码如下

public class Test1 {

	public static void main(String[] args) {
		Person p = new Person();
		Person p1 = new Person();
		Person p2 = new Person();
		
		p.height = 168;
		p.weight = 120;
		p.name = "Lisa";
		p.run();
		System.out.println("我的名字是:"+p.name);
		System.out.println("我的身高:"+p.height);
		System.out.println("我的体重:"+p.weight);
		System.out.println();	//换行(为了观看运行效果更好)
		
		p1.height = 170;
		p1.weight = 122;
		p1.name = "李华";
		p1.run();
		System.out.println("我的名字是:"+p1.name);
		System.out.println("我的身高:"+p1.height);
		System.out.println("我的体重:"+p1.weight);
		System.out.println();	//换行(为了观看运行效果更好)
		
		p2.height = 180;
		p2.weight = 130;
		p2.name = "路飞";
		p2.run();
		System.out.println("我的名字是:"+p2.name);
		System.out.println("我的身高:"+p2.height);
		System.out.println("我的体重:"+p2.weight);
		System.out.println();	//换行(为了观看运行效果更好)
	}

}

执行结果:

                1.2.4对象创建的问题 (注意)

        创建对象的时候,运用了关键字new说明再堆里开辟了一块新的空间,代码演示:

public class Test1 {

	public static void main(String[] args) {
		Person p = new Person();	//再堆里开辟了一块空间,p存放的是这块空间的地址
		Person p1 = new Person();	//再堆里开辟了一块空间,p1存放的是这块空间的地址
		Person p2 = p;		//将p的地址传给了p2,p2与p指向堆里的同一块内存。
		
		p.name = "王五";
		p1.name = "三娃";
		System.out.println(p.name);
		System.out.println(p1.name);
		System.out.println(p2.name);	//前面并没有给p2赋值
		System.out.println(); //换行
		
		p2.name = "四娃";
		System.out.println(p.name);
		System.out.println(p1.name);
		System.out.println(p2.name);
		
	}

}

     执行结果:

图解:

 

        1.2.4基本数据变量与引用数据类型变量的区别

        每一个变量都代表着一储存值的内存位置,声明一个变量时,就是告诉编译器这个变量可以存放什么类型的值。对基本类型变量来说,对应内存所存储的值是基本类型值。对应用类型的变量来说,对应内存储存的只是一个引用是对象的地址。

        将一个变量赋值(=)给另一个变量时,对基本数据类型而言就是将变量的实际值赋值给另一个变量。而对引用数据类型来说,就是将一个将一个对象名中存放的地址赋给另一个对象名(两个对象名共同指向一个对象)。引用类型变量的赋值原理与上图一样。

        1.2.5静态变量

        静态变量被类中的所有对象共享。静态方法不能直接访问类中的实例成员(可以通过创建对象来访问)。静态也被称为是唯一的。

        如果一个对象修改了讲台变量的值,,那么同一个类的所有对象都会受到影响。Java支持静态方法和静态变量无需创建创建实例就可以访问(通过 类名.静态属性/静态方法)。

        代码如下:

public class Demo {
	static int x = 5;//定义int类型的静态变量x赋值为5
	public static void run() {
		System.out.println("正在跑步。。。");
	}
}

    创建测试类

public class Text {
	public static void main(String[] args) {
		Demo d = new Demo();
		Demo d1 = new Demo();
		d.x = 10;
		System.out.println(d.x);
		System.out.println(d1.x);
		
		System.out.println(Demo.x);
		
		Demo.run();
	}
}


执行结果如下;

        

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5636705.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存