初识java
一.什么是类
类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称“类”类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。
这是百度的对类的介绍。
从中我们可以获取什么样的信息呢?
1.面向对象
2.数据说明和一组操作数据或传递信息的函数
首先我们来看看面向对象。学过c的都晓得c是一门面向过程的语言。众所周知,java是一门面向对象的程序设计语言。想要了解面向对象就得看看二者的区别了
面向对象是一种编程思想,需要慢慢的去理解,这里先不着急。
再看看第二点,数据说明和一组操作数据或传递消息的函数。
是不是很抽象?那就对了
类的组成成分为成员变量(属性)和成员方法(行为),成员变量就是前面提到的数据,而方法就是操作数据或传递信息的函数,也可以理解为C语言里面的函数。
这都是实实在在的定义,比较抽象。那类还能怎么理解呢?
地球上有很多的物种,而人类就是其中一种。在现代社会,人类有很多的基本属性,例如名字,年龄,性别等等。人类也有很多的行为 ,例如吃饭,睡觉,走路等等。我们可以把人类理解为一个类,人的基本属性理解为类的属性,人的行为理解为类的方法。
如果还不能理解那再来看看这一张图片
在上面的图片中,哪些可以当做类,哪些是方法,哪些是属性呢?
那么,类是怎么定义的呢?
让我们来看看:(由于没有讲权限修饰符,我们先暂时忽略)
权限修饰符 + class{
}
为了加深对类的理解,让我们来自定义一个类
class People {
}
在自定义类中,属性的声明方法为:
权限修饰符 + 数据类型 + 变量名。
我们就可以给我们的自定义类添加属性了,这里就不妨添加上面的名字,年龄,性别。
class People {
//姓名
String name;
//年龄
int age;
//性别
int sex;
}
有了属性了,根据上面所说我们还可以往类里面添加方法,而方法又分为构造方法和普通方法。
1.构造方法:
构造方法又称为构造器,是用来对象的实例化的。构造方法的组成为:
权限修饰符 + 方法名(形参列表){}
值得注意的是,构造方法的方法名要和当前类的类名相同,所以也可以理解为:
权限修饰符 + 类名(形参列表){}
2.普通方法
普通方法的定义格式为:
权限修饰符 + 返回值类型 + 方法名(形参列表){方法体}
不难看出普通方法比构造方法在形式的定义上多了一个返回值类型,
那什么是返回值类型呢,学过c的朋友应该不陌生,返回值类型就是要返回的数据类型,也就是数据类型。所以这里可以填java的基本数据类型
(byte,short,char,int,long,float,double,boolean)
和引用数据类型
(String类等或者自定义类)
。
根据上面所描述的人的基本行为,我们再来给我们的类改进一下:
class People {
//姓名
String name;
//年龄
int age;
//性别
char sex;
//构造器
People(){
}
//吃饭
void eat() {
}
//睡觉
void sleep() {
}
//走路
void walk() {
}
}
注:由于在形参列表这设计到方法重写问题,所以我这里暂时使用的是空参。
在这里我们基本完成了一个普通的自定义类,java是面向对象的,让我们来试一试怎么实例化(创建)一个对象:
创建对象的一般格式为:
类名 + 变量名 = new 构造方法;
让我们来创建一个对象
People p1 = new People();
当我们创建好一个对象时,也就是说有一个人类宝宝出出生了,那我们是不是要给他(她)娶一个名字呢?所有我们得给对象相应的属性赋值,我们可以通过
对象.属性
来给其赋值,如下:
p1.name = “张三”;
同理可得,我们也可以使用这个方法给其他属性赋值
p1.age = 1;
p1.sex = ‘男’;
此时我们试着在控制台输出相应的值
整合代码如下:
public class PeopleTest {
public static void main(String[] args) {
//创建对象
People p1 = new People();
//赋值操作
p1.name = "张三";
p1.age = 1;
p1.sex = '男';
System.out.println(p1.name);
System.out.println(p1.age);
System.out.println(p1.sex);
}
}
控制台的结果为:
张三
1
男
二.面向对象的封装(初步体会)
我们一直强调java是面向对象的,那面向对象有用什么特性呢?
面向对象有三大特性:
封装 (Encapsulation)
继承 (Inheritance)
多态 (Polymorphism)
在这里我们主要来讲一讲封装性:
首先我们来看一看类的访问机制:
类的访问机制:
1.在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。
(例外:static方法访问非static,编译不通过。)
2.在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中
定义的成员。
那什么东西可以用来控制类的访问机制呢?
答案就是权限修饰符。
先来看看:
再回去看看我们之前定义的类,看起来是没有加权限修饰符的,其实没有加权限修饰符就默认为缺省(xǐng)。
我们可以通过使用权限修饰符去限制类中数据和方法的访问来提高程序的逻辑性和安全性,也能更好得体现封装这一特性。
举一个例子:
在Java中,我们希望通过将数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对该属性的操作,以实现下述目的:
1.隐藏一个类中不需要对外提供的实现细节;
2.使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑, 限制对属性的不合理操作;
3.便于修改,增强代码的可维护性;
也就是说,一个人类幼崽刚出世生的时候我们不希望任何人都可以随时随地去为一个婴儿取名字或者改名,我们得通过一个合法的渠道去给孩子取名改名,在Java中就是提供一个方法去给孩子取名改名,我们通常将这种类型的称为set方法,同理可得,我们的一些个人数据信息是保密的,我们也不希望任何人都可以轻易获取到我们的信息,所以我们可以提供相应的get方法让他人只能通过合法的方法去获取我们的信息。
所有我们可以对我们自定义的类进行修改:
class People {
// 姓名
private String name;
// 年龄
private int age;
// 性别
private char sex;
// 构造器
public People() {
}
//获取名字的方法
public String getName() {
return name;
}
//更改名字的方法
public void setName(String name) {
this.name = name;
}
//获取名字的方法
public int getAge() {
return age;
}
//更改年龄的方法
public void setAge(int age) {
this.age = age;
}
//获取性别的方法
public char getSex() {
return sex;
}
}
讲完了属性和方法的权限修饰符,我们再来看看一个类的权限修饰符,其实类是分为内部类和外部类两种的,这里我们只讨论外部类。外部类只能被public和default(缺省)这两种权限修饰符修饰,其权限与上面的表一致。那么,在外部类定义的时候要注意什么呢?
在一个java源文件中,可以定义多个类(类的名字不能相同),但是只能定义一个public的类,且这个public类必须要与源文件的文件名相同,但是与其文件名相同的类不一定是public的。
三.JavaBean(了解)
JavaBean是一种Java语言写成的可重用组件。
所谓javaBean,是指符合如下标准的Java类:
1.类是公共的
2.有一个无参的公共的构造器
3.有属性,且有对应的get、set方法
用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关 心任何改变。
以上就是我对java类的初步认识,可能有很多理解不够全面的地方,望包涵。