面向对象编程
- java类及类的成员
- 面向对象的三大特征
- 其他关键字
面向对象与面向过程
- 面向对象(OOP,Object Oriented Programming)与面向过程(POP,Procedure Oriented Programming)
- 二者都是一种思想,面向对象是相对于面向过程而言的。
面向过程,强调的是功能行为。
面向对象,将功能封装近对象,强调具备了功能的对象。 - 面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象,分类,继承,聚合,多态等。
- 二者都是一种思想,面向对象是相对于面向过程而言的。
- 面向对象的三大特征
- 封装(Encapsulation)
- 继承(Inheriitance)
- 多态(Polymorphism)
Java类及类的成员
万物皆对象,可以用java语言来描述万事万物,把万事万物抽象成一个个的class类
- Java代码世界是由诸多个不同功能的类构成的
- Java中用类class来描述事物
- 属性:对应类中的成员变量
- 行为:对应类中的成员方法
eg:人有什么属性:高矮胖瘦;人的行为:吃饭,睡觉,上班,上学……
Field=属性=成员变量,Method=(成员)方法=函数
面向对象的思想概述
比如说设计汽车:
- 可以理解为:类=汽车设计图;对象=实实在在的汽车
- 面向对象程序设计的重点是类的设计
- 定义类其实是定义类中的成员(成员变量 相当于汽车的 零部件和成员方法先当与 汽车的运行方法)
class Person{
String name;
int age;
boolean inMarried; //以上为属性或成员变量
public void walk(){
System.out.println("人走路……");
}
public String display(){
return "名字是:“+name+,”年龄是:“+age+,“married”+isMarried;//以上为方法或函数
}
}
用面向对象的方法分析
-
我要开车去丽江,这句话包含的类和方法?
类:我,车
方法:我{开车(丽江){}} 车{启动(){} 停止(){} 前进(){} 后退(){} 拐弯(){}} -
以下几个经典案例涉及到的类和方法
- 列车司机紧急刹车
- 类:司机,列车
- 方法:司机{紧急刹车(){}} 列车{ 刹车(){}}
- 你把门关上
- 类:你 门
- 方法:你{ 关门(){}} 门{关上(){}}
- 列车司机紧急刹车
类的语法格式
修饰符 class 类名{
属性声明; //成员变量 类的成员变量可以先声明,不用初始化,类成员变量是有默认值。
方法声明; //行为,方法,也成为函数
}
说明:修饰符public:类可以被任意访问
类的正文要用{ }括起来
举例:
/** 文档注释
*一般是用在方法或类上
*/
public class Person{
public int age; //声明公有变量age int 的默认值为0
String name;// String 的默认值为null
public void showName(){
/**
*声明方法showName() 方法名:如果是多个单词时,首字母小写,其他的单词首字母大写,这样就像一个驼峰一样
* 所以就叫做驼峰命名
*/
System.out.println(name);
}
/**
* 获取年龄
* @return
*/
public int getAge(){
/**如果是一个有返回值的方法,那么方法体(就是方法后面大括号内的东西)的最后一行一定是返回相应的数据,
* 使用的是return关键字,返回的数据类型与方法定义的一致。
*/
return age;
}
}
创建java自定义类
步骤:
- 定义类(考虑修饰符,类名)
- 编写类的属性(考虑修饰符,属性类型,属性名,初始化值)
- 编写类的方法(考虑修饰符,返回值类型,方法名,形参等)
练习:
定义Person,Animal等类,加以体会
/**
*人类
*/
public class Person{
//定义成员变量(属性)
int age;
String name;
//定义方法(函数)
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
/**
*动物类(方法注释,要习惯注释)
*/
public class Animal(){
String name;//动物名称
int eye;//眼睛的个数
int legs;//几条腿
/**
* 输出动物吃的食物
* @param food 食物
*/
public void eat(String food){
System.out.println("此种动物的食物是:"+food);
}
/**
*动物的移动方式
*@param moveType 移动方式
*?
public void move(String moveType){
System.out.println("此种动物的移动方式是:"+ moveType);
}
}
对象的创建和使用
Java类的实例化,即创建类的对象。
- 使用 new +构造器创建一个新的对象
- 使用“对象名.对象成员“的方式访问对象成员(包括属性和方法);
举例:
创建类
public class Animal{
public int legs;
public void eat(String food){
System.out.pritln("Eating."+food);
}
public void move(String moveType){ //String moveType 叫方法的参数
System.out.println("Move,”+moveType);
}
public int getLegs(){
return legs;
}
}
Java类的实例化
public class Zoo{
public static void main(String[] args){
//实例化Animal类,创建Animal对象
Animal xb=new Animal(); //声明一个Animal类型的变量,变量名为xb,new Animal() 就是实例化Animal类。
//实例化Animal类并且给xb赋值,赋值的值就是当前的实例
xb.legs=4; // 给xb对象的leg属性赋值
xb.eat(); //对象的方法的调用
xb.move();
int i=xb.getLegs(); //有返回值的方法,在调用之后就会有一个值,这个值就是方法中return的那部分
System.out.println(i); //快捷键方式:sysou 然后按住alt+/
xb.eat("mouse"); //Eating.mouse
xb.move("fly");//Move.fly
//未来可能会学习更加复杂的类,我们会给这些类创建对象,并且使用对象,对于对象的使用无外乎就两个地方
//操作对象的变量,调用类的方法
}
}
- 如果创建了一个类的多个对象,对于类中定义的属性,每个对象都拥有各自的一套副本,且互不相扰
举例:
上面的Animal类
Animal a1=new Animal();
Animal a2=new Animal();
a1.leg=4;
a2.legs=8;
System.out.println(a1); //4
System.out.println(a2); //8
//类只有一个,但是通过类实例化出来的对象可以有多个,且每个对象都是独立的,互不干扰
- 练习1
- 编写教师类和学生类,并通过测试类创建对象进行测试。
学生类 | 教师类 |
---|---|
属性: | 属性: |
姓名 | 姓名 |
年龄 | 专业 |
参加的课程 | 教授的课程 |
兴趣 | 教龄 |
方法: | 方法: |
显示学生的个人信息 | 显示教师的个人信息 |
Student.java
public class Student{
String name;
int age;
String course;
String love;
public void xianShi(){
System.out.println("名字“+name+"年龄”+age+"课程“+course+”爱好:"+love);
}
}
Teacher.java
public class Teacher{
String name;
String zhuanye;
String course;
int age;
public void xianShi(){
System.out.println("姓名“+