———–android培训、java培训、java学习型技术博客、期待与您交流!————
1:面向对象
(1)面向对象是相对应面向过程而言的一种编程思想,是基于面向过程的。
(2)思想特点:
A:是一种更符合我们思考习惯的思想。
B:把复杂的事情简单化。
C:让我们从执行着变成了指挥者。
(3)案例:
A:买电脑
B:吃饭,洗衣服
C:我要喝水
(4)把大象装进冰箱,让大家对面向对象有一点点的了解。
面向过程:
class Demo {
public static void main(String[] args) {
open();
in();
close();
}
public static void open() {
System.out.println("开门");
}
public static void in() {
System.out.println("我要进去");
}
public static void close() {
System.out.println("关门");
}
}
面向对象:
如何让我们的代码更符合面向对象思想
A:有哪些类
B:类有哪些功能
C:类与类的关系
class 大象 {
public void in() {
System.out.println("我要进去");
}
}
class 冰箱 {
public void open() {
System.out.println("开门");
}
public void close() {
System.out.println("关门");
}
}
class Test {
public static void main(String[] args) {
冰箱 b = new 冰箱();
大象 d = new 大象();
b.open();
d.in();
b.close();
}
}
2:
类与对象的关系
(1)现实世界的事物:
属性:事物的特征
行为:事物的功能
(2)java中最基本的单位是类。所以,我们要把事物转换为对应的类。
(3)如何转换呢:
类 事物
成员变量 属性
成员方法 行为
成员变量:属性,字段
成员方法:函数,方法
(4)类与对象的概念
类:是一组相关的属性和行为的抽象的集合体。
对象:是该类事物的具体存在的个体。
类:学生
对象:林青霞
3:类与对象的使用
(1)学生类的制作和使用
(2)手机类的制作和使用
4:内存图
(1)一个对象的内存图:
一个对象的基本初始化过程。
![这里写图片描述](https://img-blog.csdn.net/20150426083339221)
(2)二个对象的内存图:
方法的共用。
![这里写图片描述](https://img-blog.csdn.net/20150426083247438)
(3)三个对象的内存图:
5:成员变量和局部变量的区别?
(1)在类中的位置不同:
成员变量:类中方法外。
局部变量:方法中或者方法声明上。
(2)在内存中的位置不同:
成员变量:堆中。
局部变量:栈中。
(3)生命周期不同:
成员变量:随着对象的存在而存在,随着对象的消失而消失。
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失。
(4)初始化值不同;
成员变量:有默认初始化值。
局部变量:没有默认初始化值。
问题:
成员变量和名称可以不可和局部变量一样呢?
可以。
class Demo {
int x = 10;
public void show() {
int x = 20;
System.out.println(x);
}
public void method() {
System.out.println(x);
}
}
6
变量什么时候该定义成员变量
(1)如果变量和类之间存在这描述性的关系,就该定义为成员变量。
(2)注意:
变量的定义范围越小越好。
7
引用类型作为形式参数和返回值
(1)顾客点菜案例。
顾客--服务员--厨师
(2)引用类型作为参数和返回值的问题:
A:如果一个方法的形式参数是一个类名,那么,这里肯定需要的是该类的对象。
B:如果一个方法的返回值是一个类名,那么,这里返回的肯定是该类的对象。
class Demo {
public void printStudent(Student s) {
s.show();
}
public Student getStudent() {
Student s = new Student();
return s;
}
}
8
匿名对象
(1)就是没有名字的对象。
(2)应用场景:
A:调用方法。但是仅仅只调用一次的时候使用。
B:作为实际参数传递。
Demo d = new Demo();
d.printStudent(new Student());
9
封装
(1)隐藏实现细节,提供公共的访问方式。
(2)体现有哪些呢?
A:类
B:方法体
C:private修饰成员变量
(3)private关键字:
是私有的意思。可以修饰类中的成员变量和成员方法。
注意:被它修饰的成员只能在本类中被访问。
(4)标准代码:
class Student {
private String name;
private int age;
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
public void setAge(int a) {
age = a;
}
public int getAge() {
return age;
}
}
10
构造方法
(1)创建对象,并对对象的内容进行初始化。
(2)特点:
A:方法名和类名相同。
B:没有返回值类型。
C:没有返回值。
(3)注意事项:
A:如果我们没给构造方法,系统给出一个默认构造。无参构造。
B:如果我们给出了构造方法,系统将不再提供构造方法。
这个时候,要么我们不使用无参构造方法。
要么,自己定义一个,然后使用。
推荐:自己给出无参构造方法。
(4)给成员变量赋值的方式:
A:无参+setXxx()
B:带参
(5)获取值:
getXxx()
(6)标准代码:
class Student {
private String name;
private int age;
public Student() {}
public Student(String n,int a) {
name = n;
age = a;
}
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
public void setAge(int a) {
age = a;
}
public int getAge() {
return age;
}
}
11
this关键字。
(1)代表当前类的一个对象。谁调用代表谁。
(2)应用场景:
A:使用本类的成员变量(掌握)
this.变量名;
B:使用本类其他构造方法
this(...)
C:使用本类的其他成员方法
this.方法名();
(3)标准代码:
class Student {
private String name;
private int age;
public Student() {}
public Student(String name,int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
测试类:
Student s = new Student();
s.setName("林青霞");
s.setAge(27);
System.out.println(s.getName()+"---"+s.getAge());
Student ss = new Student("林青霞",27);
System.out.println(ss.getName()+"---"+ss.getAge());
(4)案例:
A:手机标准代码案例及测试。
B:长方形标准代码案例及测试。
12
static关键字
(1)是静态的意思,可以修饰类中成员变量和成员方法。
(2)静态的特点:
A:随着类的加载而加载。
B:优先于对象存在。
C:被所有对象共享的数据。
这个也被我们作为为什么要使用静态的一个判断条件。
举例:饮水机和水杯。
D:让我们的调用多了一种方式:
a:非静态的数据,必须创建对象访问。
b:静态的数据,可以通过对象访问,也可以通过类名访问。
(3)静态的访问问题:
A:非静态方法
非静态成员变量
静态成员变量
非静态成员方法
静态成员方法
B:静态方法
静态成员变量
静态成员方法
总之:静态只能访问静态。
称呼:
静态的成员被成为类成员。跟类相关。
非静态的成员被称为实例成员。跟对象相关。
(4)main方法的解释以及如何接收键盘录入数据:
public:权限最大
static:静态,不用创建对象。
void:返回没有意义。
main:大家都是这样做的。
String[] args:接收键盘录入数据。
接收键盘录入的格式:
java HelloWorld hello world java
java HelloWorld 10 20 30
13
代码块
(1)用{}括起来的代码。
(2)分类:
A:局部代码块。
方法内。
作用:限定变量的生命周期,提高效率。
B:构造代码块。
类中,方法外。
作用:把所有构造方法中相同的代码定义到一处。
C:静态代码块。
类中,方法外,加static。
作用:在整个系统运行过程中只执行一次的内容。
(3)面试题:
构造方法,构造代码块,静态代码块的执行流程?
静态代码块 -- 构造代码块 -- 构造方法。
特点:
静态代码块只执行一次。
构造代码块每次调用构造方法都执行。
14
一个类的实例化过程
Person p = new Person();
A:把Person.class加载到内存。
B:在栈内存为p变量开辟空间。
C:在堆内存为Person对象开辟空间。
D:对成员变量进行默认初始化。
E:对成员变量进行显示初始化。
F:如果有构造代码块,通过构造代码块对成员变量进行初始化。
G:通过构造方法对成员变量进行初始化。
I:对象初始化完毕,把堆内存的地址给p变量。