面向对象与面向过程
面向对象(OOP)与面向过程(POP)
- 二者都是一种思想,面向对象是相对于面向过程而言的.面向过程,强调的是功能行为.面向对象,将功能封装进对象,强调具备了功能的对象.
- 面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法和原则,如抽象,分类,继承,聚合,多态等.
面向对象的三大特性
封装(Encapsulate)
继承(Inheritance)
多态(Polymorphism)
Java类及类的成员
属性:对应类中的成员变量
行为:对应类中的成员方法
举个栗子:把人比作class 人的属性:身高体重 人的行为:吃饭睡觉
class Person{
String name;
int age;
boolean isMarried;
//属性,或成员变量
public void walk(){
System.out.println("人走路");
}
public String display(){
return "名字是"+name;
}
//方法或函数
}
类的语法格式
修饰符 class 类名{
属性声明;
方法声明;
}
说明:修饰符public:类可以被任意访问,类的正文要用{}括起来
public class Person {
//属性,成员变量,类的成员变量可以先声明不用初始化,类成员的变量是有默认值的
String name;//String的默认值是null
int age;
//行为,方法.也叫函数
public void showName() {
System.out.println("姓名"+name);
}
}
对象的创建与使用
Java类的实例化,即创建类的对象
- 使用new + 构造器创建一个新的对象;
- 使用"对象名.对象成员"的方式访问对象成员(包括属性和方法)
类的属性
语法格式:修饰符 类型 属性名= 初始值
修饰符private:该属性只能由该类的方法访问
修饰符public:该属性可以被该类以外的方法访问
类型:任何基本类型.或任何类
public class Person{
private int age; //声明private变量age
//private私有的,可以在本类的方法使用,不能再类的外部使用
public String name = "Lila";//声明public变量name
//public公有的,这样的类变量可以在类的外部使用
//不写修饰符也能用??
//实例变量
public static String sex = '男'//static,静态的,这样的变量不需要类实例化成对象就可以直接使用
//直接通过类名.属性调用
//Person.sex
public void penson(Sting moveType){
int i = 0;//局部变量
System.out.println("cisndhidhid")
}
变量的分类:成员变量与局部变量
- 在方法/函数体外,类体内声明的变量称为成员变量
- 在方法/函数体内部声明的变量称为局部变量
成员变量(属性)和局部变量的区别
成员变量:
- 成员变量定义在类中,在整个类中都可以被访问.
- 成员变量分为类成员变量和实例成员变量,实例变量存在于对象所在的堆内存中.
- 成员变量默认都有初始化值.
- 出院变量的权限修饰符,根据需要选择
局部变量
- 局部变量只能定义在局部范围内,如方法内,代码块内等
- 局部变量存在于栈内存中.
- 作用的范围结束,变量空间会自动释放.
- 局部变量没有默认初始化值,每次必须显示初始化.
- 局部变量声明时不指定权限修饰符
类的成员:方法\函数
语法格式:
修饰符 返回值类型 方法名(参数列表){
方法体语句
}
说明:修饰符:public,private,protected等
返回值类型:return语句传递返回值.没有返回值:void
public class Person{
private int age;
public int getAge(){
return age;//声明方法getAge
}
public void setAge(int i){
age = i;//声明方法setAge,将参数i的值赋给类的成员变量age
}
}
创建一个学生类
/**
* 学生类
* @author 15874
*
*/
public class Student {
public String name; //姓名
public int age;//年龄
public String course;//课程
public String interestst;//兴趣
public void showInfo(){
System.out.println("姓名"+name);
System.out.println("年龄"+age);
System.out.println("课程"+course);
System.out.println("兴趣"+interestst);
}
}
创建一个测试类并创建一个对象进行测试
public class Test4 {
public static void main(String[] args) {
//实例化Person类,也就是创建Person对象
// Person person = new Person();
// person.name = "张三";
// person.showName();
Student stu = new Student();
stu.name = "xiaoming";
stu.age = 12;
stu.course = "yuwrn";
stu.interestst = "daqiu";
stu.showInfo();
}
}
方法(method)
什么是方法(函数)?
- 方法是类或者对象行为特征的抽象,也称函数
- Java里的方法不能独立存在,所有的方法必须定义在类里面
修饰符返回值类型方法名(参数类型 形参1,参数类型 形参2,。。。。){
程序代码
return 返回值
}
其中:
形式参数:在方法被调用时用于接收外部传入的数据的变量
参数类型:就是该形式参数的数据类型
返回值:方法在执行完毕后返回给调用它的程序的数据
返回值类型:方法要返回的结果的数据类型
实参:调用方法时实际传给函数形式参数的数据
方法的调用
方法只有被调用的时候才会被执行
public class Test4 {
public static void main(String[] args) {
//实例化Person类,也就是创建Person对象
// Person person = new Person();
// person.name = "张三";
// person.showName();
Test4 t4 = new Test4();
int area = t4.getArea(2,3);
System.out.println(area);
}
public int getArea(int x ,int y){
return x*y;
}
}
方法可以调用方法,但是方法中不能定义方法!!!
对象的产生
当一个对象被创建是,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的变量都是引用类型,如上面的Person及前面讲过的数组。
匿名对象
- 我们也可以不定义对象的句柄,而直接调用这个对象的方法.这样的对象叫做匿名对象.
- new Person().shout();
- 使用情况:如果对一个对象只需要进行一次方法调用,name就可以使用匿名对象.
-我们经常将匿名对象作为一个实参传递给一个方法调用