面向对象
1.1
面向过程:基于面向过程的一种思想!
- 面向过程:代表C语言,强调一个功能的步骤。
- 面向对象:代表java语言,强调对象的创建,使用对象调用功能。
面向对象的思想:
-
一切客观存在的事物都是对象,万物皆是对象。
-
任何对象,一定具有自己的特征和行为。
特点: - 更符合生活中的思想行为习惯 - 让复杂的事情简单化 - 让我们从执行者变成指挥者
对象:
- 特征:称为属性,一般为名词,代表对象有什么
- 行为:称为方法,一般为动词,代表对象能做什么
面对对象设计的原则:
不断创建对象、使用对象,指挥该对象做事情
面对对象的三大特征:封装、继承、多态。
1.2类和事物的关系:
事物:描述现实世界的真实存在的具体的!
学生 -----------> 学生事务
- 属性:姓名、年龄、学号、性别
- 行为:主要学习
类:描述一组事物和行为的集合(类:是Java语言的最基本的单元)
学生事务 ------------> 代码体现出来:类,学生类 class student(){}
-
属性:描述学生的特征
成员变量:位置:在类中,方法外(name,age,student,genser)
-
行为:描述学生能干什么(主要学习)
成员变量:study()
注意:成员方法去掉static public 返回值类型 方法名(参数){}
张三or李四:具体事务
代码体系集体事物:创建该类对象 类名 对象名 = new 类名();
对象名.成员变量
对象名.name = “张三”
对象名.成员方法();
面向对象的最大特点:强调面向对象的创建,使用对象调用自己的功能
1.3形式参数
- 形式参数如果是一个基本数据类型,形参的改变的改变对实际参数没有影响,需要什么数据类型,传递具体的值即可!
- 形式参数如果是一个类(具体类),那么形式参数的改变直接影响实际参数
结论:形式参数如果传递的是一个数组类型,需要传递的该数组的对象
1.4匿名对象
匿名对象:没有名字的对象。
匿名函数的格式:
new 类名();(前提条件:该类一个具体类)
**特点:**仅仅使用一次,使用完毕,从内存中会立即被释放掉(节省空假案,android移动端使用居多)
注意:使用匿名对象的时候,不建议使用多次
封装private
private关键字的特点:
- private可以修饰一个类中的成员变量,也可以成员方法
- 被private修饰的成员变量或者是成员方法只能在本类中的方法,外键不能访问!(保证数据的安全性)
什么时候将变量定义为成员变量 -----> 如果该变量能够描述某个事物的属性的话,----变量就要定义成员变量!
局部变量和成员变量名称一样(局部变量隐藏了成员变量),为了区分成员变量和局部变量,java提供了一个关键字:this(代表了当前该类对象地址引用)
setXXX(形参)方法,谁调用这个方法,那么this代表它(地址)
2.1构造方法
构造方法中的注意事项:
1)在一个类中,我们不写无参构造方法,系统会默认的提供一个无参构造方法,
2)如果我们提供一个有参构造方法,系统不会在提供无参了,如果使用无参构造方法创建对象,就会报错!
(永远建议给出无参构造方法)!
成员方法
成员方法的分类:(非静态的成员方法)
-
两种情况:
要么有返回值类型
-
1)有返回值类型,并且有参数
-
2)有返回值类型,没有参数
- 要么没有具体返回值:void代替
-
1)没有返回值类型,带参
-
2)没有返回值类,不带参
2.2关键字:static
“静态修饰符”
共享的,共用的
//定义一个人类
class Person{
//定义三个成员变量
String name ; //null
int age ; //0
//String country ; //null
static String country ;
//提供两个参数的有参构造
public Person(String name,int age){
this.name = name ;
this.age = age;
}
//带三个参数的构造方法
public Person(String name,int age,String country){
this.name = name ;
this.age = age ;
this.country = country ;
}
//提供一个成员方法:show(),将成员变量输出
public void show(){
System.out.println("姓名是:"+name+",年龄是:"+age+",所在的国籍是:"+country);
}
}
//测试类
class PersonTest{
public static void main(String[] args){
//古代四大美女
//创建对象
Person p1 = new Person("貂蝉",25,"中国") ;
p1.show() ;
System.out.println("------------------") ;
//Person p2 = new Person("西施",22,"中国") ;
//改进:
Person p2 = new Person("西施",22) ;
p2.show() ;
System.out.println("------------------") ;
//Person p3 = new Person("杨玉环",20,"中国") ;
//改进:
Person p3 = new Person("杨玉环",20) ;
p3.show() ;
System.out.println("------------------") ;
//Person p4 = new Person("王昭君",28,"中国") ;
Person p4 = new Person("王昭君",28) ;
p4.show() ;
}
}