Java补课机构_JAVA补课-DAY2:面向对象思想

IDEA自动生成一个标准的类

生成Getter\Setter:Code -->Generate选择Getter and Setter,按Ctrl选中Getter、SetterOK就好啦

5001a7672e9857acd2afe546e4a87336.png

生成无参数的构造方法:选择Constructor中的Select None就可以创建无参数的构造方法啦

生成全参数的构造方法:按Ctrl选中局部变量OK就好啦

今日重点

实现功能时,只关心已具有该功能的对象,而不是关心步骤处理过程

三大基本特征:封装、继承、多态

类型和对象

类:一组相关##属性##和##行为##的集合,抽象的

属性:该事务状态信息,是什么

行为:事务能够做什么

对象,一类事物的实例,具体的

类是对象的模板,对象是类的实例

类的定义和使用

使用一个类:

1.导包 import.包名.类名,相同包内省略

2.创建,格式:类名称 对象名 =new 类名称();

3.使用:①使用成员变量:对象名.成员变量②使用成员方法:对象名.成员方法

注意事项:成员变量没有赋值,会有默认值

public class UseStudent {

public static void main(String[] args) {

Student stu=new Student();

//成员变量

System.out.println(stu.age);

System.out.println("============");

//成员方法

stu.eat();

System.out.println("============");

//成员变量赋值

stu.name="猪八戒";

stu.age=18;

System.out.println(stu.age);

System.out.println(stu.name);

}

}

一个对象的内存图

理解压栈、弹栈

程序执行,先进栈

创建对象,new出来的都保存在堆当中

堆当中的成员从方法区来,成员方法保存的是方法区的成员方法地址

成员自己的地址赋值给栈中存储

根据地址可以找到对象

调用方法(方法区地址),方法执行先进栈,执行完出栈

main方法执行完出栈

289ac10b22db0bf706db1d79129c0747.png

两个对象使用同一方法内存图

第二个对象的方法仍然指向方法区同一块空间

b44b6382073689a544d23e3b99157ec2.png

两个引用指向同一对象的内存图

类名称 类名 = 旧的类

不new就会指向堆中同一区域,不补图了,脑补吧

使用对象类型作为方法的参数

当一个对象作为参数,传递到方法中,实际传递的是对象的地址值

对象的地址存储在堆当中,在new时创建的

02c385dd3b5c61ab73f590602651d16d.png

使用对象类型作为返回值

当一个对象作为方法的返回值时,返回的是对象的地址

对象的地址存储在堆当中,在new时创建的

3994d2fabdd1a0c2d66a963e9ca0b2ad.png

成员变量和局部变量的区别

定义的位置不一样:成员变量:方法外部,直接写在类当中;局部变量:方法内部

作用域不一样:局部变量作用域方法;成员变量作用域整个类

默认值不一样:局部变量没有默认值,使用必须赋值方法的参数就是局部变量

内存位置不一样:局部变量:位于栈;成员变量:位于堆区

生命周期不一样:局部变量:随方法进栈而生,方法出栈而终;成员变量:随对象创建而生,对象被回收而终(Java程序员无法控制的)

面向对象三大特征——封装

体现:①方法就是一种封装;②关键字private也是一种封装

封装就是将细节信息隐藏起来,对外界不可见

private关键字作用和使用

一旦使用private进行修饰,那么本类中仍然可以随意访问,但是超出本类范围就会报错!!!

解决:使用专门成员方法,使用间接方法,用于获取、设置,即定义一对Getter/Setter方法。

优点:专用Getter/Setter方法,,可以阻止不合理赋值,提高代码安全性

注意事项:①getXxx或者setXxx命名②Getter方法不能有参数,返回值类型与成员变量对应③Setter方法不能有返回值,参数值类型与成员变量对应④bollean值Getter是isXxx,setter不变

this关键字的作用“重名区分”

当方法的成员变量和局部变量重名的时候,会根据“就近原则”适应局部变量

如需访问成员变量,就加关键字this

通过谁调用的方法,谁就是this

6ca22850bdd5364cd838f8671b41a03f.png

构造方法

专门用来创建对象的方法,当我们使用关键字new时,就是在调用构造方法

格式:public 类名称(参数类型 参数名称){方法体}

注意事项:①构造方法名称和类名必须完全一样,注意大小写②构造方法不写返回值类型,连void都不写③构造方法不能产生返回值④如果没有写构造方法,编译器会默认赠送一个构造方法,没有参数、方法体什么都不做。⑤一旦写了至少一个构造方法,编译器则不再赠送构造方法(涉及重载)

构造方法:

ublic class Dog {

private int age;

private String color;

public Dog(){

System.out.println("构造方法已经执行!!!");

}

//重载有参数的构造方法

public Dog(int age,String color){

System.out.println("第二个构造方法已经执行!!!");

this.age=age;

this.color=color;

}

public void setAge(int age) {

this.age = age;

}

public int getAge() {

return age;

}

public void setColor(String color){

this.color=color;

}

public String getColor(){

return color;

}

}

使用构造方法

package Day2;

public class TestDog {

public static void main(String[] args) {

Dog dog=new Dog();//new以后的就是构造方法

Dog dog1=new Dog(12,"black");

dog1.setAge(13);

System.out.println("小狗"+dog1.getAge()+"岁了,颜色是"+dog1.getColor());

}

}

定义一个标准的类

标准的类组成成分

1.所有成员都用private关键字修饰

2.为每一个成员变量编写一对Setter/Getter

3.编写一个无参数的构造方法

4.编写一个全参数的构造方法

生成一个标准的类

动手写一下成员变量

IDEA快捷键生成就好啦

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值