JAVA第七学:类和对象
1.认识面向对象
Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人 们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。
以面向对象方式来进行处理,就不关注洗衣服的过程,具体洗衣机是怎么来洗衣服,如何来甩干的,用户不用去关心,只需要将衣服放进洗衣机,倒入洗衣粉,启动开关即可,通过对象之间的交互来完成的。
注意:面向过程和面相对象并不是一门语言,而是解决问题的方法,没有那个好坏之分,都有其专门的应用场景。
2.类的定义与使用
类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类成员变量。方法主要说明类具有哪些功能,称为类的成员方法。
class WashMachine{public String brand; // 品牌public String type; // 型号public double weight; // 重量public double length; // 长public double width; // 宽public double height; // 高public String color; // 颜色public void washClothes(){ // 洗衣服System.out.println("洗衣功能");}public void dryClothes(){ // 脱水System.out.println("脱水功能");}public void setTime(){ // 定时System.out.println("定时功能");}
}
采用Java语言将洗衣机类在计算机中定义完成,经过javac编译之后形成.class文件,在JVM的基础上计算机就可以识别了。
定义一个狗类
class PetDog {// 狗的属性public String name;//名字public String color;//颜色// 狗的行为public void barks() {System.out.println(name + ": 旺旺旺~~~");}public void wag() {System.out.println(name + ": 摇尾巴~~~");}
}
定义一个学生类
public class Student{public String name;public String gender;public short age;public double score;public void DoClass(){}public void DoHomework(){}public void Exam(){}
}
3.类的实例化
定义了一个类,就相当于在计算机中定义了一种新的类型,与int,double类似,只不过int和double是java语言自 带的内置类型,而类是用户自定义了一个新的类型,比如上述的:PetDog类和Student类。它们都是类(一种新定 义的类型)有了这些自定义的类型之后,就可以使用这些类来定义实例(或者称为对象)。
用类(类型)创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。
new 关键字用于创建一个对象的实例;使用 . 来访问对象中的属性和方法;同一个类可以创建多个实例.
4.this引用
this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。 注意:this引用的是调用成员方法的对象。
5.对象的构造及初始化
5.1 构造方法(特性)
(1)名字必须与类名相同
(2)没有返回值类型,设置为void也不行
(3)创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次(相当于人的出生,每个人只能出生一次)
public class Date {public int year;public int month;public int day;public Date(){year = 2025;month = 9;day = 27;System.out.println("调用构造方法");}public void setdate(int year, int month,int day){this.year = year;this.month = month;this.day = day;}public void printDate(){System.out.println(this.year + "-" + month + "-" +day);}public static void main(String[] args) {Date date = new Date();data.printDate();}
}
(4)构造方法可以重载(用户根据自己的需求提供不同参数的构造方法)
(5)如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的。 public Date( ){ } 确保new操作能够正常进行
注意:一旦用户定义,编译器则不再生成。
(6)构造方法中,可以通过this调用其他构造方法来简化代码
(7)绝大多数情况下使用public来修饰,特殊场景下会被private修饰(后序讲单例模式时会遇到)
总结
5.2 就地初始化 代码块初始化
注意:代码编译完成后,编译器会将所有给成员初始化的这些语句添加到各个构造函数中
5.3 对象的打印
6.包是什么
6.1 概念+自定义包
6.2 导入包中的类
7. 封装(重点)
7.1 概念
7.2 访问限定符
Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用。
8.static成员
在Java中,被static修饰的成员,称之为静态成员,也可以称为类成员,其不属于某个具体的对象,是所有对象所共享的。
8.1 static修饰成员变量
static修饰的成员变量,称为静态成员变量(类属性),静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的。
8.2 static修饰成员方法
Java中,被static修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的。静态成员一般是通过静态方法来访问的。