Java语言的基本元素:类和对象
类和对象是面向对象的核心概念。
类是对一类事物的描述,是抽象的、概念上的定义
对象是实际存在的该类事物的每个个体,因而也称为实例(instance)
属性:对应类中的成员变量。
行为:对应类中的成员方法
对象
对象,是一个抽象概念,英文称为“Object”,表示存在的事物。通俗的来说就是世间万物皆对象!现实世界中肉眼可见的一种事物都是对象,对象是事物存在的实体,例如:人、手机、电脑。为了大家能简单的理解,只要现实世界中看得到的实物都是一个对象。
类
类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称之为类(简单的理解也可以是分类)。
- 如果类文件中只有一个类时,文件名必须与类名保持一致;
- 一个java文件中只能有一个public类;
- 如果类文件中不止一个类,文件名必须与public类名一致;
- 如果文件中不止一个类,而且没有public类,文件可与任意类名一致;
局部变量
局部变量从字面意思来理解就是在一定范围有效。
定义:成员方法内部定义的变量,那么这个变量就是局部变量。
分析:局部变量在方法执行时被创建在方法执行结束后就会被销毁。同时局部变量在使用时必须进行赋值操作或者初始化,否则会出现编译错误。
构造方法
构造方法定义
在类中除了有成员方法之外还有一个特殊类型的方法,那就是构造方法。构造方法是一个类与类同名的方法,我们实体就是通过构造方法来创建的。也就是说每当类实例化一个对象时,类都会自动调用构造方法。
- 构造方法没有返回值类型,也不能定义void
- 构造方法的名称要与本类的名称相同
- 构造方法主要作用是完成初始化工作,也能把定义对象的参数传给对象成员
this关键字
this关键字在方法体内表示当前类的对象。类是对象的载体,把通过类可以创建出很多的对象,那么当创建的对象去调用方法时,被调用的方法体内有this关键字,那么这个方法体内的this就是当前对象自己本身。
public class Lei{
public static void main(String[] args){
Demo2 d = new Demo2("张三", 32);
d.sayHello();
}
}
class define{
String name; //名字
int age; //年龄
public Demo2(String name, int age){
name = name;
age = age;
}
//说出自己个人信息
public void sayHello(){
System.out.println("我的名字是" + name + ",年龄为" + age);
}
}
static关键字
在代码中使用static关键字修饰的变量、方法、常量都被称为静态变量、方法、常量,也可以称之为类的静态成员。
public class StaticStu
{
public static String name = "";
public static void main(String[] args){
name = "伊卡";
System.out.println(name);
}
}
面向对象思想的实现
1.创建类、设计类的成员
2.创建类的对象
3.通过“对象.属性”或“对象.方法”调用对象的结构。
面向对象程序设计具有以下三个通用特点:
√封装性
√继承性
√多态性
如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性。(非static的)
意味着:如果我们修改一个对象的属性a,则不影响另外一个对象属性a的值
封装
封装是面向对象编程的核心思想。也就是将对象的特征和行为封装起来,其载体就是类,类通常会隐藏其实现细节,这就是封装的思想。也就是说现实生活中的物品或商品你只要负责使用就ok,其他的你可以不管。例如:使用手机打电话,只要你打通电话就行,具体内部怎么实现无需知道。
继承
继承是每一门计算机语言不可少的机制,主要作用就是利用继承机制使新建的类可以建立在原有类的基础之上。在使用或者重写原有类的行为或者功能(程序里叫成员方法)以及访问原有类的特征(也就是类的成员变量)。我们可以称新类为子类,原有类为父类。举个例子:如果类A是类B的父类,而类B是类C的父类,那么也可称类C是类A的子类,类C是从类A基础而来。同时在java中,关于类的继承是单一继承的,也就是说,一个子类只能拥有一个父类,一个父类可以有多个子类。总而言之,继承是在代码中实现重复利用的重要手段,子类通过继承,复用父类特征和行为的同时又添加了子类特有的特征和行为。
多态
将父类对象应用于子类的特征就是多态。多态通俗理解就是多种形态,但每一个实体(对象)还是具备了父类的特征和行为。
包
创建包的时候,如果在命名中用”.”分割,每个"."代表创建一个子文件夹
如果使用a.b.c进行命名。意思就是创建一个文件夹a,然后在a里面创建一个b文件夹,然后在b里面创建一个c文件夹
import关键字
使用方法:import 包名.类名
注意!import只能导入类!!!
import可以导入包中的某个具体的类
特殊用法
import 包名.*
意思是导入包下的所有类,按需加载。
但是”.*“用法在导入中容易出现导入两个同名类,引发报错,可以采用下列两种方式进行改正:
使用import的时候将要用的类写明确。
在使用类的时候写全名
import static 静态导入
只会导入所有静态类,从而快速访问其中的静态方法和属性
在调用的时候就不用加类名了
比如System.out.println()打印方法,就不用加System.了
常见的系统包
java.lang JDK的基础包(System、String、Object类都在这个包下,JDK1.1之后会自动导入)
java,lang.reflect 反射开发包
java.util 工具包(集合类都在这个包下,Arrays、LinkedList、HashMap等等)
java.io I/O开发包,文件读取和写入
java.net 网络编程开发包
java.sql 数据库开发用到的包
继承
当类和类之间满足一个类is a另一个类 那么一定存在继承关系,这种继承关系被称为天然继承。
extends关键字
定义类的时候如果使用extends 即public class 类1 extends 类2 {}
则类1继承了类2的所有方法和属性
类1称为子类/派生类
类2称为父类/基类