目录
一 引入
二 类
1.了解 2.代码 3.静态成员变量 4.静态成员方法 5.封装private6.构造方法
三 对象
1.创建与使用 2.内存图
一 引入:
面向过程:你要全程参与一件事 (目的,过程,结果)
面向对象:你只需要知道目的,中间过程有人帮你完成,你直接get结果(目的,结果)
就像em 写作业和抄作业 : 他们都需要你最后在自己的本子上写满,但是 写作业自己写自己思考,抄作业直接抄就完事了。(嘿嘿嘿,是不是很形象)
创建的类 就是帮助你 完成中间过程的 具体方法
之后,你 把类实例化 get 一个具体的对象 就可以用 你具体的对象 去利用抽象的类 让他来帮你实现中间的过程
来我还有张图图:
二 类:
1.那让我们了解一下类~
//创建类
class (大驼峰){
field; //成员属性 字段->属性->成员变量-> 类的内部 方法的外部
method; //成员方法
}
class为定义类的关键字
class-name为类的名字
{}中为类的主体
类中的元素称为:成员属性
类中的函数称为:成员方法
2.代码
这样看还是很抽象——拿来一个例子让你康康!
class Person{
public String name;
public int age;
public void eat(){
System.out.println(name+" 可以自己吃饭啦!");
}
public void sleep(){
System.out.println(name+age+" 睡觉觉~");
}
}
三 对象
1.创建与使用:
我们刚刚学会了创建类,那我们该怎么使用它?——我们需要new一个对象!!!
//实例化对象
<对象名> = new ();
new 关键字用于创建一个对象的实例
使用 . 来访问对象中的属性和方法
同一个类可创建多个对象
class Person{
public String name;
public int age;
static int count;
public void eat(){
System.out.println(name+" 可以自己吃饭啦!");
}
public void sleep(){
System.out.println(name+age+" 睡觉觉~");
}
}
public class Text {
public static void main(String[] args) {
Person person1 = new Person();
person1.name = "heihei";
person1.age = 3;
person1.eat();
person1.sleep();
}
}
嘿嘿嘿!没错 是不是很简单 那我接下来带你康康这个代码的在栈区 堆区开辟的空间图~
2.内存图
哇呜哇呜!!是不是有人看到了不懂的东西?public static int count?那我们回到二类 说说
二 类
3.静态成员变量~ 其实成员变量分为:普通成员变量,静态成员变量
普通成员变量-依赖对象-可以new多个变量
静态成员变量-不依赖对象-只存一份,用类访问(看图~)
4.静态成员方法~ 其实成员方法分为:普通成员方法,静态成员方法
从3,4我们不难看出:所有被static所修饰的方法或者属性,全部不依赖于对象
好 我们先简单小结一下
1.引用不都在栈上
2.Person person = null; 这个引用 不指向任何对象
3.Person person1 = new Person();
Person person2 = person1; person2这个引用指向person这个引用所指向的对象
4.一个引用不可以同时指向多个对象
Person person = new Person();
person = new Person();
5.普通方法的内部,不能定义静态的变量——static定义的变量-类变量-属于类-不需要对应的引用调用
普通方法调用-需要对应引用调用
6.静态成员变量,不可以在方法里定义
7.普通方法可以调用静态方法(反之不行,没有对象)
5.封装private
好了下面我要搞事情~
我心情好~我给这些成员变量 换个名~好家伙 利用我创造的类的人 可能心情不是很好了~~~看到了吗一堆的警告~啊我有理由怀疑他在骂我——我打了个喷嚏
那我们为了防止这样心情突然好(啊就是想搞事情的人)用private~封装
~~被 public 修饰的成员变量或者成员方法, 可以直接被类的调用者使用. ~~被 private 修饰的成员变量或者成员方法, 不能被类的调用者使用哎哎哎,别着急敲代码 其实接口 可以让编译器帮我们搞!
这就欧克了!
但是还有点小问题 我们仔细康康一编译器帮忙生成的代码
有this这有什么用???那看代码
class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
name = name;
}
public void eat() {
System.out.println(name + " 可以自己吃饭啦!");
}
}
public class Text {
public static void main(String[] args) {
Person person1 = new Person();
person1.setName("lalala");
System.out.println(person1.getName());
}
}
哎 根本没赋值! 因为name = name 局部变量优先使用了,同一个name
所以建议一般都加上this(不加不一定错,加上一定不错!)
6.构造方法:
介绍一下:方法名和类名是相同的,且构造方法比较特殊,没有返回值
什么作用?一个对象的产生(对象的实例化)——为对象分配内存
——调用合适的构造方法
注意:
1.如果没实现任何的构造方法,编译器会帮我们,默认生成一个不带参数的构造方法————简单来说,一个类至少会有一个构造方法,就算你没写
2.如果当前类有其他的构造方法,那么编译器不会帮我们生成不带参数的构造方法
3.构造方法之间可以构成——重载
class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
name = name;
}
public void eat() {
System.out.println(name + " 可以自己吃饭啦!");
}
public Person(){
System.out.println("Person::不带参数的构造方法");
}
public Person(String name){
this.name = name; //this.对当前对象的引用
只能存放在构造方法中,必须放在第一行
System.out.println("Person::带一个参数的构造方法");
}
}
public class Text {
public static void main(String[] args) {
Person person1 = new Person();
Person person2 = new Person("lalala");
}
}
好了!差不多总的来说 就这些嘿嘿~~我就知道你们可能有点懵 我搞了一张大纲图 你们康康~~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)