------- android培训、java培训、期待与您交流!----------
首先要明白面向对象是什么东西,为什么要出现面向对象的java思想?
对象都有属性,方法,只要拿到对象就能操作对象的属性和方法
所以把事物封装成对象,便于操作
1 面向对象三个特征:封装,继承,多态
以后开发就是找对象使用,没有对象,就创建一个对象.
找对象,建立对象,使用对象,维护对象的关系
2 定义类就是在描述事物,就是在定义属性和行为,属性和行为共同成为类中的成员( 成员变量和成员方法)
3 Car c=new Car(); //c就是一个类类型变量.记住类类型变量指向对象
4 当这个类不需要保证独立运行可以不用写主函数
当要这个类需要运行的时候,创造类对象即可
以下是没有主函数的类,可以创建对象使用
class Student
{
private String name;
private int age;
Student(String name,intage)
{
this.name=name;
this.age=age;
}
}
5 成员变量(直接在类下面定义)默认初始化值为0和局部变量(在函数里定义或在语 句中)没有默认初始化值
成员变量:作用于整个类中
局部变量作用于函数中或者语句中
在内存中的位置:
成员变量在堆内存中
局部变量存在于栈内存中
6 例子:
class Car
{
String color="红色"; //这是成员变量
int num=4; //这是成员变量
void run() //这是成员方法
{
System.out.print(color+"..."+num);
}
public static void main(String[] args)
{
int money=10000; //这是局部变量
Car c=new Car(); //在本类中创建本类对象
//c.run;这是错误的,因为主函数是static,而成员方法不是static,静态函数只能调用静态函数,因为静态函数类加载的时候就有了,而非静态函数要创建对象才会存在,还没有怎么能调用呢,要懂得先来后到的秩序啊兄弟
非静态函数可以调用静态函数,因为静态函数比非静态函数先加载
c.run ;
c.num=10; //调用这个可以
}
}
7 封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式.
好处:将变化隔离.便于使用.提高重用性.提高安全性
原则:将不需要对外提供的内容都隐藏起来
把属性都隐藏,提供公共对其访问
注意:私有仅仅是封装的一种表现形式.
8 private:私有.权限修饰符:用于修饰类中的成员(成员变量,成员函数)
私有后只能在本类中访问
9 构造函数:
函数名与类名相同
不用定义返回值类型
不可以写return语句
作用:对象一建立就会调用对应的构造函数,是给对象初始化
注意:
当一个类中没有定义构造函数时,那么系统会默认会给该类加入一个空参数 的 构造函数:例子
person(){}
当类中定义了构造函数,系统就不帮你定义构造函数了
10 构造函数和一般函数在写法上有不同,在运行上也有不同
构造函数是在对象一建立就运行,给对象初始化
而一般方法是对象调用才执行,是给对象添加对象具备的功能.
一个对象建立,构造函数只运行一次
而一般方法可以被该对象调用多次
11 什么时候定义构造函数呢?
当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中
12 构造代码块
给对象进行初始化,对象一建立就运行,而且优先于构造函数执行
和构造函数的区别:
构造代码块是给所有对象就行初始化
而构造函数是给对应的对象初始化
例子: class persro {
{//这是一个构造函数
System.out.print("name"+name); }
person() { System.out.print("name"+name); } }//这是一个构造函数
13 this:看上去是用于区分局部变量和成员变量同名的情况
this为什么可以解决这个问题呢?
this:代表本类的对象,到底代表那一个呢?
代表它所属函数的所属对象的引用.
简单说:那个对象在调用this,this就代表那个对象的
14 this的应用:当定义类中的功能时,该函数内部要用到调用该函数的对象时,这时 用this来表示该对象,但凡本类功能内部使用了本类对象,都用this来表示
15 例子:比较两个人是否是同龄人 class Person { Private int age; Person(int age) //这句话int age定义的age是在栈内存中,函数初始化 // 时,把20赋给了age age=20; { this.age=age; //这句话右边的age是局部变量的age //中的this是调用函数的对象,this.age表示调用函数的对象的age. //this.age=age局部变量的age赋值给当前调用函数的对象的age } public boolean compare(Person p) { return this.age==p.age; } } class test { public static void main(String[] args) { Person p1=new Person(20); Person p2=new Person(25); p1.compare(p2); } }
16 构造函数间调用构造函数,格式为this(...);
this语句用于构造函数之间进行互相调用
this语句只能定义在构造函数的第一行,因为初始化要先执行
例子: class person { private int age; private Sting name; person(String name) { this.name=name; } person(String name,int age) { this(name); //这句话是构造函数里面调用构造函数,一般函数调用格式是:函数名(); 但是构造函数就要用this代替函数名 因为this代表调用函数的对象所要初始化的数 //this(name)定义在函数的第一行,因为避免被其他初始化覆盖 this.age=age; } } class test2 { public static void main (String[] args) { person p1=new person(zhangsan,25); person p2=new person(wangwu,20); } }
------- android培训、java培训、期待与您交流!----------