一、为什么要有面对对象程序设计
符合人类思维习惯,编程更简单,更好理解。
二、类和对象
-
类(设计图):是对象共同特征的描述
-
对象:是真实存在的具体东西。
在java中,必须先设计类,*才能获得对象
1.如何定义类
public class /*类名*/{
1.成员变量(代表属性,一般名词)
2.成员方法(代表行为,一般是动词)
3.构造器(后面学)
4.代码块(后面学)
5.内部类(后面学)
}
如:
public class Phone{
String brand;
double price;
pubilc void call()
{
}
public void playGame()
{
}
}
(1).如何得到类的对象
类名 对象名 = new 类名();
Phong p = new Phong();
(2).如何使用对象
-
访问属性:对象名.成员变量;
-
访问行为:对象名.方法名(...);
2.定义类的补充注意事项
-
用来描述一类事物的类,专业叫做:javabean类。
在javabean类中,是不写main方法的。
-
在以前,编写main方法的类,叫做测试类。
我们可以在测试类中创建javabean类的对象并进行赋值调用。
-
类名首字母建议大写,需要见名知意,驼峰模式,不能用关键字,满足标识符规定;
-
一个java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。实际开发中建议还是一个文件定义一个class类。
-
成员变量的完整的定义格式是:
修饰符,数据类型,变量名称 = 初始化值一般无需指定初始化值,存在默认值。
对象成员变量的默认值规则:
三、面向对象三大特征:
封装 继承 多态
1.封装:
(1).定义:
告诉我们,如何正确设计对象的属性和方法
原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为。
例:创建一个学生对象并赋予相应属性及行为。
public class Student{
String name;
int age;
String gender;
public void setname()
{
this.name = name;
}
public String getname()
{
return name;
}
public void setage()
{
this.age = age;
}
public String getage()
{
return age;
}
public void gender()
{
this.gender = gender;
}
public String gender()
{
return gender;
}
}
(2).理解封装思想的好处:
-
让编程变得很简单,有什么事,找对象,调用方法就行。
-
降低学习成本,不用记对象有哪些方法,有需要找就行。
(3).private关键字:
-
是一个权限修饰符
-
可以修饰成员(成员变量和成员方法)
-
被private修饰的成员只能在本类中才能访问
①用方法访问对象:
-
提供“setxxx(参数)”方法,用于给成员变量赋值,方法用public修饰
-
提供“getxxx()”方法,用于获取成员变量的值,方法用public修饰
-
public void setname() { this.name = name; } public String getname() { return name; }
2.this关键字:
作用:
区分成员变量和局部变量。
就近原则:谁离我近,我就用谁。
本质:
代表方法调用者的地址值
成员变量及局部变量:
-
成员变量:类中方法外的变量
-
局部变量:方法中的变量
3.构造方法概述:
构造方法也叫做构造器,构造函数。
作用:在创建对象的时候给成员变量进行赋值
(1).构造法方法的格式:
pubilc class Student{
修饰符 类名(参数){
方法体;
}
}
public class Student{
private String name;
private int age;
public Student()
{
/*空参构造*/
/*如果我们自己没有写任何的构造方法
那么虚拟机给我们加一个空参构造*/
初始化的对象时,成员变量的数据均采用默认值
}
public Student(String name,int age)
{
/*带参构造*/
在初始化对象的时候,同时可以为对象进行赋值
}
}
特点:
-
方法名与类名相同,大小写也要一致
-
没有返回值类型,连void都没有
-
没有具体的返回值(不能由return带回结果数据)
执行时机:
-
创建对象的时候由虚拟机调用,不能手动调用方法
-
每创建一次对象,就会调用一次构造方法
(2).构造方法注意事项:
①构造方法的定义:
-
如果没有定义构造方法,系统将给出一个默认的无参数构造方法
-
如果定义了构造方法,系统将不再提供默认的构造方法
②构造方法的重载:
-
带参构造方法,和无参数构造方法,两者方法名相同,但是参数不同,这叫做构造方法的重载
③推荐的使用方式
-
无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法。
四、标准JavaBean类
①类名需要见名知意
②成员变量使用private修饰
③提供至少两个构造方法
-
无参构造方法
-
带全部参数的构造方法
④成员方法
-
提供每一个成员变量对应的setXxx()/getXxx()
-
如果还有其他行为,也需要写上
例如:旺仔牛奶的基本信息
public class WangZai {
private String name;
private String BornTime;
private String DeadTime;
private int EnergyContain;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBornTime() {
return BornTime;
}
public void setBornTime(String bornTime) {
BornTime = bornTime;
}
public String getDeadTime() {
return DeadTime;
}
public void setDeadTime(String deadTime) {
DeadTime = deadTime;
}
public int getEnergyContain() {
return EnergyContain;
}
public void setEnergyContain(int energyContain) {
EnergyContain = energyContain;
}
}