黑马程序员_面向对象讲解
来源:互联网 发布:stm8l152数据手册 编辑:程序博客网 时间:2024/05/16 09:57
------- 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培训、期待与您交流!----------
- 黑马程序员_面向对象讲解
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_数组的排序,求最值和查找
- 经典单例模式的实现:
- Unity3d编译APK包时,DEX编译失败
- 如何挂载ubi文件系统
- android Task 学习笔记
- 黑马程序员_面向对象讲解
- jQuery.validate 用法
- wordpress远程上传图片
- flex Menu(下拉菜单)的实现
- Android瀑布流,类似于蘑菇街和迷尚 应用里的排列
- 修改oralce11g 字符集为ZHS16GBK
- Debian 6,使用 insserv 代替 update-rc.d
- 输出txt
- linux(此处实践为mac os系统)下禁用指定端口