目录
- 面向对象
- 类和对象
- 构造器
一、二维数组
1.1 二维数组的初始化:
静态初始化
动态初始化
public class Demo01_BinaryArray{ public static void main(String[] args){ //数组初始化:静态、动态 //1.静态初始化,长度由JVM自动计算 int[][] arr1 = {{1,2,3},{4,5,6},{7,8,9}}; /* 1 2 3 4 5 6 7 8 9 */ //2.动态初始化 int[][] arr2 = new int[4][5]; //4*5的矩阵 int[] arr3[] = new int[4][5]; } } |
1.2 二维数组在内存中存储:
1.3 二维数组的遍历:
public class Demo03_BinaryArray{ public static void main(String[] args){ //静态初始化 int[][] a = {{11,12,13},{21,22,23},{31,32,33},{41,42,43}}; for(int i=0;i<4;i++){ //外层循环,遍历行 for(int j=0;j<3;j++){ //内层循环,遍历列 System.out.println("i:" + i + ",j:" + j + ";" + a[i][j]); } } } } |
二、面向对象概述:
2.1 举例:
把大象装进冰箱:
面向过程:打开冰箱门->把大象塞进冰箱->把冰箱门关上(人是执行者)
面向对象:冰箱打开门->大象进冰箱->冰箱关闭门(人是指挥者)
2.2 思想概述:
面向过程思想:第一步、第二步、......
面向对象思想:找对象(第一步、第二步......)
2.3 特点:
- 是一种更符合我们思想习惯的思想
- 可以把复杂的事情简单化
- 人从执行者变成指挥者,角色发生了变化。
- 面向对象开发核心在于不断地创建对象、使用对象、指挥对象做事情。
- 面向对象设计主要是管理和维护对象之间的关系。
2.4 面向对象特征:
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
三、类和对象:
3.1 类和对象的概念:
对象:是计算机语言对问题域中事物的描述,对象通过属性和方法来分别对应事物所具备的静态属性和动态属性。
属性:该事物的描述信息,人:age/sex/name/id/address.....
方法:该事物具有的动作行为,人:eat/sleep/work......
类:用于描述同一类型的对象的一个抽象概念,类中定义了这个对象的所有静态属性和动态方法。
类可以看成是一类对象的模板,对象可以看成是类的一个具体实例。
职员------抽象---->类:职员 ------实例化---> 对象:李小姐 age 20 position 秘书
print() 右手打印 clean() 左手扫地 |
引用:Java中除了8大基本类型之外的变量类型全部都是引用类型,Java中的对象通过引用对其进行操作的。
创建对象:
必须使用new关键字创建对象
使用“对象名.成员变量”来引用对象的成员变量
使用“对象名.方法名(参数)”来调用对象的方法
同一个类中每个对象的方法共享该类的方法。
3.2 对象的内存分配:
1、一个对象的内存分配:
2、两个对象的内存分配:
3、三个引用两个对象的内存分配:
3.3 类(对象)之间的关系:
1、关联关系
Hibernate/MyBatis
2、继承关系
3、聚合关系
4、实现关系:
接口:只提供方法声明。
类:属性(成员变量)+方法。
类实现接口。
5、多态关系:
3.4 匿名(Anonymous)对象:
1、定义:没有明确声明的对象,只使用一次,没有任何一个具体的对象名称引用它。用完之后就会被GC回收。
2、实例
public class DemoTest { public static void main(String[] args) { // 匿名对象 new Person().speak(); } }
class Person { private int age = 21; private String name = "张三";
public void speak() { System.out.println("大家好,我叫" + name + ",今年" + age + "岁!"); } } |
3.5 封装:
1、封装的定义:
隐藏对象的属性和实现细节,仅对外提供公共访问方法。
2、好处:
隐藏细节,提高安全性
提高代码的复用性
3、原则:
把不需要对外提供的内容隐藏起来。
把属性隐藏,提供公共访问方法
4、private(私有的)关键字
是一个权限修饰符
可以用来修饰成员变量和方法
被修饰的变量或方法只能在本类的内部使用。
5、this关键字:
代表当前对象的引用,用来区分成员变量和局部变量
Student.java |
public class Student { // 成员变量 // private——修饰的成员变量或方法,只能在本类内部使用 private String name; private int age; private String address;
// 对外提供公共的访问方法 // 一般来说,至少需要对外提供每一个成员变量的get方法和set方法 public void setName(String name) { // this——代表当前对象的引用,用来区分成员变量和局部变量 this.name = name; }
public String getName() { return name; }
public void setAge(int age) { this.age = age; }
public int getAge() { return age; }
public void setAddress(String address) { this.address = address; }
public String getAddress() { return address; } }
|
StudentTest.java |
public class StudentTest { public static void main(String[] args) { Student student = new Student(); student.setName("张三"); String ss = student.getName(); System.out.println(ss); } } |
3.6 构造器(constructor):
任何一个类,都会默认提供一个无参构造器。
构造器本质是一种特殊方法,在使用new创建对象的时候调用。
有参构造器:一旦在类中定义了有参构造器,必须要在类中给定无参构造器,才能使用new创建对象。有参构造器可以取代set方法给类的成员变量赋值。
Teacher.java |
public class Teacher { private String name; private String title;
public Teacher() { // 无参构造器 System.out.println("调用了无参构造器!"); }
// 有参构造器:一旦在类中定义了有参构造器,必须要在类中给定无参构造器,才能使用new创建对象。 public Teacher(String name, String title) { this.name = name; this.title = title; System.out.println("调用了有参构造器!name:" + name + ",title:" + title); }
// get/set方法 右键单击->Source->Genarate Getters and Setters public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getTitle() { return title; }
public void setTitle(String title) { this.title = title; } }
|
TeacherTest.java |
public class TeacherTest { public static void main(String[] args) { Teacher teacher = new Teacher("张老师", "讲师"); String name = teacher.getName(); } } |