目录
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 指明该类实现的接口,后跟接口名列表。父类不可以超过一个,而接口可以有多个。
修饰符包括:
- public 访问控制符:指明该类是公共类,可以被其他任意类访问其数据成员和成员方法。
- 默认访问控制符:即不写访问控制符,表示该类只能被本包中的类访问,不能使用import 语句被引入
- abstract 修饰符:指明该类是抽象类,即不能被实例化,也就是不能用它来创建对象。定义它的主要目的是用它来创建字类。
- 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(); } }
执行结果如下;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)