java面向对象的初步认识

稍微有些乱,日后再陆续整理,主要参义方法,与理解代码意思。

面向对象的引入

实质就是一种变成范式(就是一种套路–一类问题的解决方案)

先说面向过程,面向过程就是注重每个动作的代码细节实现;

例如把大象装冰箱 打开冰箱门,把大象装冰箱,再关门;这就是面向过程

面向过程的特点:就是关注代码细节;代码复用性问题
//
面向对象则是,有人做装大象这件事,你只要告诉这个人,这个人就会帮你装

而这个人也是重复上述步骤;

而这种方式就是面向对象,以此类比万物皆对象

面向对象:先把过程的代码实现细节整合到对象中,只要找到这个对象就能

拿到这个对象身上的功能,面向对象基于面向过程;

面向对象是否优于面向过程呢?如果长江比较简单,优先使用面向过程,如果场景

比较复杂就优先使用面向对象;

----------------------------------
类和对象之间的关系

对一类对象进行抽取,对共有的特征抽取成属性,将共有的行为抽取成

方法,这一类对象就抽取成了类-----而类就是对象的概括;

人		class person{
姓名 		
性别		String name;
吃饭		char gender
睡觉		int age;
		eat();sleep();

将对象抽象成一个类,抽取成一段描述,

public class ibject{public static void main(String[] args){

创建person对象

调用的是构造方法---用于创建对讲

创建对象是由调用构造方法来完成的;

【构造方法–无参构造 public person(){}与类同名,

没有返回值类型(没有void) 两点同时符合时才是构造方法;

如果类中没有手动添加构造方法,jvm会在底层默认添加一个无参构造

如果类中定义了构造方法,jvm就不会添加一个无参构造

构造方法可以重载,可以对对象的属性可以初始化 】

person p = new person();

p.age=10; 给对象的属性 age 赋值10;

方法有就近原则

有参构造: public person(St15:50 2019/7/6ring name){

name = name; 方法中name直接找到name,则输出null;
改为 this.name = name 则会正常赋值;

【在java中所有的非静态属性以及方法都可以通过对象调用】
不加static的属性就是非静态属性

	} 

}
person类
class person{
属性
String name

char gender

int age

类中写方法不写static,如果想让main方法调用,就加static

方法:public void eta(){name+ 吃 }

  public void sleep(){name+睡}


【public static void m(person p){

p.age=10;

如果在main方法中再次调用 m 方法,则方法传入的是一个对象;

对象的地址值找到原堆内存改变了元素,会影响原堆内存。】

}

}
}
}

演示:

class Student{

String name;

int age;

char gender;

public Student(){

System.out.println(“this:”+this);
}
public Student(String){}

public void study(){

【this】就代表当前类的对象;this就可以指代还没有创建的对象;

System.out.println(this.name+“在学习”);
System.out.println(“this:”+this); }
}

创建Student对象

Student s = new Student();

Student s1 = new Student();

System.out.print(“s1”+s1);

this----关键字

用于代表当前类的对象,this可以指代还没有创建的对象,

也可指代刚创建出的对象,也可指代正在使用的对象,是一个灵活的指代,

指代就是正在使用的对象—也是虚拟的指代,因为并没有开辟空间

public Student(String name){

this.name = name;
}

public Student(String name,int age){

 如果使用Student(name)则调不到方法

 【调用已经有的方法;使用this(name);】

this语句---格式 this(参数)

this语句只能在本类构造方法中调用其他形式的构造方法;

this语句只能在第一行调用

this.age=age

}

演示:
class baby{
属性
String name;
char gender;
int age;
构造方法代表----生产方式;
public baby(){
this.name =“xxx”
this.gender=“xx”
this.age=1;
}
public babay(String name){
this.name =“xxx”
this.gender=“xx”
this.age=1;
}
public baby(String name,int age){
this.name =“xxx”
this.gender=“xx”
this.age=1;

}

方法---行为
public void cry(){

System.out.println("cry");}

}

构造代码块

类内外方法{}---构造代码块

构造代码块格式 { 方法 } 与创建对象有关,构造代码块中的内容

优先所有的构造方法先执行;与位置无关;

也可以对属性进行初始化

只要创建对象无论调用任何形式的构造方法都会先执行构造代码块

{ this.name =“xxx”
this.gender=“xx”
this.age=1; }

局部代码块
也叫做方法代码块,用于控制变量的生命周期;

提高内存利用率;

public static void main(String[] args){


int j =2;

局部代码块:{int i = 1;

System.out.println(i+j);}

可以控制变量的生命周期;

直接创建的对象,称为匿名对象:

new baby().age;

可以给属性进行赋值取值;

匿名对象的使用场景:

只能使用一次,当做参数传递的时候

位置、

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

局部变量:方法内或者代码(非静态)里;

成员变量:方法外,类内

2、作用范围

两个位置不一样,作用范围不一样

3、内存位置

成员变量在堆内存

局部变量在栈内存

4、声明周期

局部变量:当方法执行或者执行代码块而创建;方法或者代码块执行完毕

就随之消除;

成员变量:随着对象的创建而产生的,随着对象变为无用对象被回收时,就销毁;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值