面向对象编程
学习面向对象内容的三条主线
- Java类及类的成员
- 面向对象的三大特征
- 其它关键字
面向对象与面向过程
- 二者都是一种思想,而面向对象是相对于面向过程而言的。面向过程,强调的是功能行为。面向对象,将功能封装进对象,强调具备了功能的对象
- 面向对象更加强调运用人类在日常的逻辑思维中采用的思想方法与原则。如:抽象,分类,继承,多态,聚合等。
面向对象的三大特征
- 封装
- 继承
- 多态
Java及类的成员
-
现实世界万物是由分子,原子构成的。同理,Java代码世界是由诸多个不同功能的类构成的
-
可以用Java语言来描述万事万物,把万事万物抽象成一个个class类
- 属性:对应类中的成员变量
- 行为:对应类中的成员方法
Fifld = 属性 = 成员变量。Method = (成员)方法 = 函数
面向对象的思想概述
- 可以理解为: 类 = 汽车设计图; 对象 = 实实在在的汽车
- 面向对象程序设计的重点是类的设计
- 定义类其实是定义类中的成员(成员变量和成员方法)
类的语法格式
修饰符class类名{
属性声明;
方法声明;
}
说明:修饰符public,类可以被任意访问
类的正文用{}括起来
public class Person {
//属性,成员变量,类的成员变量可以先声明,不用初始化,类的成员变量是有默认值
String name; //姓名,String的默认值是null
int age; //年龄,int的默认值是null
//行为,方法,也叫函数
/**
* 打印姓名
*/
public void showName(){ //方法的名称如果是多个单词,首个单词的首字母小写,其他单词首字母大写,就像一个驼峰一样,所以叫驼峰命名法
System.out.println("姓名:" + name);
}
/**
* 获取年龄
* @return
*/
public int getAge(){ //如果是一个有返回值的方法,那么方法的最后一行一定是返回相应的数据,使用return关键字,返回的数据类型与方法定义的一致
return age;
}
}
创建Java自定义类
步骤
- 定义类(考虑修饰符,类名)
- 编写类的属性(考虑修饰符,属性类型,属性名,初始化值)
- 编写类的方法(考虑修饰符,返回值类型,方法名,形参等)
/**
*动物的类
* @author 1by
*
*/
public class animal {
String name; //动物的名称
int eyes; //眼睛的个数
int legs; //几条腿
/**
* 输出动物吃的食物
* @param food 食物
*/
public void move(String food){
System.out.println("此种动物的食物是:" + food);
/**
* 动物的移动方式
* @Sparam moveType 移动方式
*/
public void move(String moveType){
System.out.println("此种动物的移动方式是:" + moveType);
}
}
类的成员之一:属性
-
语法格式:
修饰符 类名 属性名 = 初值
-
说明:修饰符 private:该属性只能由该类的方法访问
修饰符public:该属性可以被类以外的方法访问私有,只能在当前自己的类使用
类型:任何基本类型,如int,bollean或任何类
-
public class person {
public String name = "zhangsan"; //pubilc是公有的,这样类变量可以在类的外部使用,也可以在本类方法使用
private int age; //private私有的,可以在类的外部使用,不能做类的外部使用
//修饰符可以用来修饰变量,可以指明变量是一个共有还是私有,私有的类变量不能通过对象.属性的方式调用
//实例变量就是说在类实例化成对象之后才能用的
public static String sex = "男"; //static意思是静态的,这样的变量不需要再实例化成对象就可以使用
//可以直接通过类名.属性这样的方式直接调用,这样的变量叫做类变量
public void showAge(){
System.out.println(age);
}
}
补充:变量的分类:成员变量与局部变量
- 在方法体外,类体内声明的变量成为成员变量
- 在方法体内部声明的变量成为局部变量
成员变量(属性)和局部变量的区别?
- 成员变量
- 成员变量定义在类中,在整个类中都可以被访问
- 成员变量分为类成员变量和实例成员变量,实例变量存在于对象所在的堆内存中,只能是在类实例化后的对象中使用
- 成员变量有默认初始化值
- 成员变量的权限修饰符可以根据需要,选择任意一个
- 局部变量
- 局部变量只定义在局部范围内,如:方法内,代码块内等。
- 局部变量存在于栈内存中
- 作用的范围结束,变量空间会自动释放
- 局部变量没有默认的初始化值,每次必须显示初始化
- 局部变量声明时不指定权限修饰符
类的成员方法之二:方法
-
语法格式:
修饰符 返回值类型 方法名 (参数列表){
方法体语句;
}
-
说明:修饰符:pubilc,private,protected等
返回值类型:return 语句传递返回值。没有返回值:void
-
对象的创建和使用
- 如果创建了一个类的多个对象,对于类中定义的属性,每个对象都拥有各自的一套副本,且互不干扰
练习
编写学生类,并通过测试类对象就行测试
学生类
属性:
姓名
年龄
参加的课程
兴趣
方法:
显示学生的个人信息
public class test {
student stu = new student();
stu.name = "小明";
stu.age = 12;
stu.course = "语文,数学,英语,化学";
stu.interset = "打球,街舞,唱歌";
stu.showInfo();
}
/**
* 学生类
* @author 1by
*/
public class student {
public String name; //姓名
public int age; //年龄
public String course; //课程
public String interset; //兴趣
/**
* 显示学生的个人信息
*/
public void showInfo(){
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
System.out.println("课程:" + course);
System.out.println("兴趣:" + interset);
}
}
输出结果为
姓名:小明
年龄:12
课程:语文,数学,英语,化学
兴趣:打球,街舞,唱歌
方法
- 方法是类或对象行为特征的抽象,也称为函数
- Java里的方法不能独立存在,所有的方法必须定义在类里
- 方法只有在被调用才会被执行
- 方法中不能再调用方法
- 同一个类中,所用的方法可以直接互相调用,不用new去实例化对象
对象的产生
- 当一个对象被创建时。会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的变量类型都是引用类型,如上面的person
匿名对象
-
可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象
如:new Person().shot();
-
使用情况
- 如果对一个对象只需进行一次方法调用,那么可以使用匿名对象
- 经常将匿名对象作为实参传递给一个方法调用。