1.面向对象的初步认识
1.1什么是面向对象
java是一门纯面向对象的语言,在面向对象的世界里,一切皆为对象,面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知。
1.2面向对象与面向过程
1.传统洗衣服过程
拿盆子———>放水———>放衣服———>倒洗衣粉———>手搓———>换水———>倒洗衣粉———>手搓———>拧干———>晾衣服
2.现代洗衣服的过程
用面向对象的方式来处理,不关注过程,有四个对象,人,衣服,洗衣机,洗衣液。
整个过程是人把衣服放进洗衣机导入洗衣液开始洗衣服。
2.类定义和使用
2.1简单认识类
类是用来对一个实体来进行描述的,主要描述该实体具有哪些属性,功能,描述完成后计算机就开始识别了。
2.2类的定义格式
class为定义类的关键字,WashMachine类的名字,{}中为类主体。
类中包括的内容称为类的成员,属性是用来描述类的,称之为类的成员属性或者类成员变量,方法主要说明类的那些功能,称之为类的成员方法。
//创建类
class WashMachine{
public String brand;//品牌
public String type; //型号
public String weight;//重量
public String height;//高度
public String length;//长度
public void WashClothes(){
System.out.println("洗衣");
}
public void DryClothes(){
System.out.println("脱水");
public void SetTime(){
System.out.println("定时");
}
2.3 类的命名
类名注意采用大驼峰定义。
成员前写法统一为public。
此处写的方法不带static关键字。
3.类的实例化
3.1什么是实例化
public class Dog {
private String name;
private int id;
public Dog(String myName, int myid) {
name = myName;
id = myid;
}
public void eat(){
System.out.println(name+"正在吃");
}
public void sleep(){
System.out.println(name+"正在睡");
}
public void introduction() {
System.out.println("大家好!我是" + id + "号" + name + ".");
}
public static void main(String[] args){
Dog d = new Dog("阿黄",101);
d.introduction();
d.eat();
d.sleep();
}
}
大家好!我是101号阿黄
阿黄正在吃
阿黄正在睡
3.2类和对象的说明
1.类只是一个模型一样的东西,用来对一个实体进行描述。
2.类是一种自定义的类型,可以用来定义变量,但是在java中用类定义出来的变量我们成为对象。
3.一个类可以实例化出多个对象,实例化出的对象,占用实际的物理空间,存储类成员变量。
4.this引用
4.1为什么要有this引用
以上代码定义了一个日期类,然后main方法中创建了三个对象,并通过Date类中的成员方法对对象进行设置和打印。
注意两个问题
1.形参名不小心与成员变量名相同:
那函数体中到底是谁给谁赋值?
2.三个对象都在的调用setDate和printDate函数,但是这两个函数中没有任何有关对象的说明,setDate和printDat函数如何知道打印的是哪个对象的数据呢?
4.2什么是this引用
java编译器给每个“成员方法”增加了一个隐藏的引用类型参数,该引用参数指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中中所有成员变量的操作,都是通过该引用访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。
this引用是编译器自动添加的,永华在实现代码时一般不需要显式给出。
注意:this引用的是调用成员方法的对象。
4.3 this引用的特性
1.this的类型:对应类类型引用
2.this只能在“成员方法”中使用
3.在“成员方法”中,this只能引用当前对象,不能再引用其他对象,具有final属性
4.this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法对象的引用传递给该成员方法,this负责来接受。
5.对象的构造及初始化
5.1如何初始化对象
错误
正确
5.2构造方法
5.2.1概念
构造方法也成为构造器,是一个特殊的成员方法没名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。
2.2.2特性
1.名字必须与类名相同。
2.没有返回值类型,设置void也不行。
3.创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次
4.构造方法可以重载。
5.如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的。
6经过Java.c编译之后,构造函数的名字会被修改成<init>.
7.构造方法中,可以通过this调用其他构造方法来简化代码。
注意:this(...)必须是构造方法中的第一条于语句
不能形成环