面向对象思想
Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。三大基本特征:继承、封装、多态
类和对象(主要看概念)
类:类是一组相关属性和行为的集合。可以看作是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。
属性:该事物的状态信息
行为:该事物能够做什么
对象:对象是类的实例,是一类事物的具体体现
类的定义
Java中用class来定义类
成员变量:对应事物的属性
成员方法:对应事物的行为
public class Student {
//成员变量
String name;//姓名
int age;//年龄
//成员方法
//学习的方法
publicvoid study() {
System.out.println("好好学习,天天向上");
}
//吃饭的方法
publicvoid eat() {
System.out.println("学习饿了要吃饭");
}
}
使用对象
创建对象
类名 对象名 = new 类名();
访问方式
对象名.成员变量;
对象名.成员方法();
成员变量的默认值
一大特性:封装
封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。
原则
将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。
步骤
1.使用private关键字修饰成员变量;
private是一个权限修饰符,代表最小权限;
可以修饰成员变量和成员方法;
被其修饰的成员变量和成员方法,只在本类中才能访问;
2.为了应对需要访问成员变量的情况,定义使用get set方法;
public class Student {
private String name;
private int age;
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
public void setAge(int a) {
age = a;
}
public int getAge() {
return age;
}
}
注意:这里定义的内部的get set 方法的参数名如果和成员变量重复会出现问题,这对于程序的容错性是非常不友好的,为了解决这个问题可以使用this关键字
封装的优化:this
this:代表所在类当前对象的引用,即对象自己的引用。
注:方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。
使用this可以让我们的代码可读性更强,也不用特别考虑命名问题。
public class Student {
private String name;
private int age;
public void setName(String name) {
//name = name;
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
//age = age;
this.age = age;
}
public int getAge() {
return age;
}
}
封装优化:构造方法
构造方法:一个对象在被创建的时候,构造方法用来初始化该对象,给对象的成员变量赋予初始值。
构造方法名同类名相同,没有返回值不需要返回类型,连void也不需要。
注:即使在程序员没有定义构造方法的情况下,构造方法也是存在的,由Java自动提供。
public class Student {
private String name;
private int age;
// 无参数构造方法
public Student() {}
// 有参数构造方法
public Student(String name,int age) {
this.name = name;
this.age = age;
}
}
代码的标准化:JavaBean
JavaBean 是 Java语言编写类的一种标准规范。符合 JavaBean 的类,要求类必须是具体的和公共的,并且具有无参数的构造方法,提供用来操作成员变量的 set 和 get 方法。
具体的模板:
public class ClassName{
//成员变量
//构造方法
//无参构造方法【必须】
//有参构造方法【建议】
//成员方法
//getXxx()
//setXxx()
}
public class Student {
//成员变量
private String name;
private int age;
//构造方法
public Student() {}
public Student(String name,int age) {
this.name = name;
this.age = age;
}
//成员方法
publicvoid setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
publicvoid setAge(int age) {
this.age = age;
}
publicint getAge() {
return age;
}
}
测试类
public class TestStudent {
public static void main(String[] args) {
//无参构造使用
Student s= new Student();
s.setName("柳岩");
s.setAge(18);
System.out.println(s.getName()+"‐‐‐"+s.getAge());
//带参构造使用
Student s2= new Student("赵丽颖",18);
System.out.println(s2.getName()+"‐‐‐"+s2.getAge());
}
}
从这个示例中我们也可以看出来同时在类内存在两个构造方法也就是提供了两种初始化方式,也就是说构造方法是可以重载的。