类和对象
来源:互联网 发布:php chmod 777 编辑:程序博客网 时间:2024/05/22 03:18
1.现实世界是由很多很多对象组成的
基于对象抽出了类
2.对象:真实存在的单个的个体
类:类型/类别,代表一类个体
3.类中可以包含:
(1)所有对象所共有的属性/特征——>变量
(2)所有对象所共有的行为——>方法
4.一个类可以创建多个对象
同一类型的多个对象,结构相同,数据不同
5.类是对象的模板,对象是类的具体的示例
二:如何创建类?如何创建对象?如何访问成员?
1.成员变量与局部变量的差别如下:
局部变量:
(1)定义在方法中;
(2)没有默认值,必须自行设定初始值;
(3)方法被调用时,存在栈中,方法调用结束时局部变量从栈中清除;
成员变量:
(1)定义在类中,方法外;
(2)由系统设定默认初始值,可以不显式初始化;
(3)所在类被实例化后,存在堆中,对象被回收时,成员变量失效;
2.null:空,没有指向任何对象
若引用的值为null,则该引用不能再进行任何操作了,
若操作,则发生NullPointerException空指针异常
如:下列空指针异常
Teacher teacher = null; //引用teacher中的值为null,没有指向任何对象;
teacher = new Teacher(); //引用teacher指向了一个Teacher对象;
3.同一个文件中,可以包含多个类
(1)public修饰的类,只能有一个
(2)public修饰的类,必须与文件名相同
package oo.day01;public class Test {public static void main(String[] args){Teacher linsa = new Teacher();//创建了Teacher的一个对象//访问成员变量linsa.name="linsa";linsa.age =24;linsa.salary=5000;linsa.print();}}class Teacher {//创建了一个Teacher类String name;int age;double salary;void print(){System.out.println("name="+name);System.out.println("age="+age);System.out.println("salary="+salary);}}
结果如图:
三.方法的构造:
1.方法的签名:方法名+参数列表
2.方法的重载(Overload):——>重点
(1)发生在一个类中,方法名称相同,参数列表不同
(2)编译器在编译时会根据方法签名自动绑定调用的方法
3.构造方法:
(1)给成员变量赋初值
(2)与类同名,没有返回值类型
(3)在创建对象时被自动调用
(4)若自己不写构造方法,则编译器默认提供一个无参构造方法,
若自己写了构造方法,则不再默认提供
(5)构造方法可以重载
4.this:指代当前对象,哪个对象调方法指的就是哪个对象
只能用在方法中,方法中访问成员变量之前默认有个this.
this的用法:
(1)this.成员变量名----------访问成员变量
(2)this.方法名()------------调用方法(一般不用)
(3)this()-------------------调用构造方法
package oo.day02;//学生类public class Student {//成员变量String name;int age;String address;Student(){this(null,0,null);}Student(String name){this(name,0,null);}Student(String name,int age){this(name,age,null);}Student(String name,int age,String address){this.name=name;this.age=age;this.address=address;}//方法void study() {System.out.println(name+"在学习...");}void sayHi() {System.out.println("大家好,我叫"+name+"今年"+age+"岁了,家住"+address+"。");}}
package oo.day02;//学生类的测试类public class StudentTest {public static void main(String[] args) {Student zs = new Student("zhangsan",25,"河北廊坊");zs.study();zs.sayHi();Student ls = new Student("lisi",26,"黑龙江佳木斯");ls.study();ls.sayHi();}}
结果如图:
四.引用类型数组:
1.Student[] stus=new Student[3];
stus[0] = new Student();
stus[1] = new Student();
stus[2] = new Student();
2.Student[] stus = new Student[]{
new Student(),
new Student(),
new Student()
};
3.int[][] arr=new int[3][];
arr[0]=new int[2];//arr中第一个元素中有两个元素
arr[1]=new int[3];
arr[2]=new int[2];
arr[1][0] = 100; //给arr中第2个元素中的第1个元素赋值为100
4.int[][] arr = new int[3][4];//3行4列
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
arr[i][j] = 100;
}
}
- 【面向对象】对象和类
- 面向对象--类和对象
- 面向对象(类和对象)
- 面向对象-类和对象
- 面向对象----类和对象
- 类和对象
- vfp对象和类
- 类和对象
- Chap02:类和对象
- 类、对象和方法
- C#类和对象
- 第一章 类和对象
- 类和对象
- 对象、类和结构
- 类和对象
- 类和对象
- 类和对象
- 类和对象
- linux常用指令
- 求职经历笔试题之美乐威
- Ambari安装之安装并配置Ambari-server(三)
- STL set_difference set_intersection set_union 操作
- java 代理实践
- 类和对象
- <!DOCTYPE> 知识点回顾
- LeetCode-43-Multiply Strings 模拟
- Ambari安装之部署单节点集群
- 使用Unity3D制作技能图标冷却效果
- Spring的bean的生命周期
- Appserv连接Mysql失败解决方式
- LeetCode 338. Counting Bits (Medium)
- ionic+做一个侧滑跳转+标题头旁边有一个后退功能的按钮