面向对象(OOP)与面向过程(POP)
二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为。面向对象,将功能封装进对象,强调具备了功能的对象。面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。
面向对象的三大特征
封装继承多态
类的语法格式:
修饰符 class 类名{
属性声明; //成员变量
方法声明; //函数
}
类的成员变量可以先声明,不用初始化,类成员变量有默认值
public class Person {
//属性
String name;
int age;
//方法
public void showName()
{
System.out.println("姓名:" + name);
}
//如果是一个有返回值的方法,那么方法体的最后一行一定是返回相应的数据,使用return关键字
//返回的数据类型一定与定义的一致
public int getAge()
{
return age;
}
}
对象的创建与使用
使用new+构造器创建一个新对象使用“对象名.对象成员”的方式访问对象成员(包括属性和方法)
public class Main {
public static void main(String[] args) {
//实例化Person类,也就是创建Person对象
Person person = new Person();
person.name ="张三";
person.showName();
int i = person.getAge();//有返回值的方法,在调用之后就会有一个值,这个值就是方法中return的那部分
System.out.println(i);
person.age = 21;
int a = person.getAge();
System.out.println(a);
}
}
类的成员之一:属性
语法格式:
修饰符 类型 属性名 = 初值;
说明:
修饰符private:该属性只能由该类的方法访问。修饰符public:该属性可以被该类以外的方法访问。类型:任何基本类型,如int、boolean或任何类。
实例变量(不以static修饰):就是说在类实例化成对象之后才能使的。类对象(以static修饰):直接可以通过类名.属性的方式调用。
成员变量(属性)和局部变量的区别
类的成员之二:方法
语法格式:
修饰符 返回值类型 方法名(参数列表){
方法体语句;
}
说明:
修饰符:public,private,protected 等。
返回值类型:return语句传递返回值。没有返回值:void
类有一个,通过类实例化出来的对象可以多个,每个对象都是独立的,互不干扰
方法中不能再定义方法
匿名对象:可以不定义对象,而直接调用对象
eg. new Person().shout();
练习:
//Main.java
public class Main {
public static void main(String[] args) {
//实例化Person类,也就是创建Person对象
Person p = new Person();
p.name = "lucy";
p.age = 11;
p.sex = 1;
p.study();
int a = p.addAge(2);
System.out.println(a);
}
}
//Person.java
public class Person {
public String name;
public int age;
public int sex;//0男1女
public void study()
{
System.out.println("studying");
}
public void showAge()
{
System.out.println(age);
}
public int addAge(int i)
{
age += i;
return age;
}
}
输出结果:
2.设计类Circle计算圆的面积
public class Main {
public static void main(String[] args) {
//实例化Person类,也就是创建Person对象
Circle c = new Circle();
double a = c.area(2);
System.out.println(a);
}
}
//计算圆的面积
public class Circle {
public double area(double r) {
return 3.14 * r * r;
}
}
结果如下:
类的访问机制
在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。
(例外:static方法访问非static的成员变量,编译不能通过。)
在不同类中的访问机制:先创建要访问类的对象(Person p = new Person();),再用对象访问类中定义的成员(p.属性;p.方法)。



