JAVA基础之面向对象

面向对象

什么是面向对象
JAVA编程最重要的思想就是面向对象编程。
那么什么是面向对象呢?
面向对象是一种看待事物的方式,把自己当成指挥,把任务委托给其他个体去完成,这个个体就是对象。
当需要完成某件事时,首先寻找具有相应功能的对象,如果没有就去创建一个。
类的概念
一类具有相同属性和功能的实体的集合
对象的概念
在一个类中,一个具有特殊功能的实体,能够解决特定的问题,对象也被称为实例。
类与对象之间的关系
类是对象的抽象(模板),对象是类的具体体现(实例)

注意:

  • 一个Java文件中可以写多个类,如果写多个类,则编译 后会生成多个.class文件
  • 一个Java文件中最多只能有一个被public修饰的类,这个类的类名必须和Java源文件名保持一致
  • 一个Java文件中如果只有一个类,并且这个类不用public修饰的话,类名和文件名可以不一样,但习惯上,我们都会写上public

类中成员变量的定义

成员变量:

​ a.成员变量其实就是全局变量
​ b.成员变量也被称为属性
​ c.分为静态变量和非静态变量
​ d.在静态方法中只能访问静态成员变量,在非静态方法中可以访问非静态成员变量和静态成员变量

类中方法的定义

a.分为静态方法和非静态方法

b.在同一个类中,在静态方法中只能调用静态方法,在非静态方法中可以调用非静态方法和静态方法

总结:

  1. 静态能访问静态的,不能直接访问非静态的,如果要访问,必须要创建对象。

  2. 非静态的能直接访问非静态的和静态的。

  3. 如果要访问另外一个类中的静态成员变量和静态方法 类名.静态成员变量 、类名.静态方法名

     public class Person {
         	//成员变量(属性)
         	String  name;//姓名
         	
       				 //方法
    				 //写代码
                 	public void writeCode() {
                 		System.out.println(name+" 写java代码");
                 	}
            }
    

    这就是一个(人)类,
    有属性:姓名
    和行为(方法):写代码

如果你是一个老板,想找一个写代码的,你就需要找一个符合这个类的具体的人。毕竟上面的只是一个模板,模板不能干活。

对象的创建
使用new创建出一个实例

Person(对象类型)  p1(对象赋值的变量)=new  Person();
p1.name="张三";//给对象属性赋值
p1.writeCode();//调用对象方法 ,让对象完成功能

对象内存分配

程序运行时,操作系统会分配三块主要的内存空间

  • :直接存放基本类型数据,和引用类型的地址

    • 栈空间比较小,存取速度相对较快
    • 先进后出
  • :存放引用类型的实际数据部分

    • 堆空间比较大,存取速度相对较慢
  • 方法区:保存类的信息(包括类的名称、方法信息、字段信息);方法区中有一块空间叫串池(常量池),用来存放字符串常量;另一块空间叫静态区用来存储静态数据。

    在jdk1.7之后常量池、静态区作为堆中一部分,方法区的概念弱化。

对象内存分布

构造方法的定义

构造方法也叫构造器,是指当实例化一个对象(创建一个对象)的时候,第一个被调用的方法。方法名和类名相同。

注意:
a.构造方法没有返回值类型,构造方法是在实例化对象的过程中自动调用的。

​b.如果不写构造方法,系统会默认为我们提供一个无参的构造方法,如果添加了构造方法,系统不再提供默认的构造方法。

上面的例子就是系统默认添加的无参构造
访问权限修饰符 类名(参数列表) {
//方法体
}

public  Person(){}

构造方法重载

public Person(String name){
	 this.name=name;//添加this关键字 指向当前类成员变量 
}

前面的name是类声明的成员变量,后面的是构造方法传导的参数。

public Person(String  n){
		name=n;
}

效果相同

重载后在创建实例时可以直接对对象属性赋值

Person p1=new Person("张三");

this关键字
this.属性:访问本类的成员变量
this.方法:访问本类的其他方法
this():访问本类中的其他构造方法
注意:

​ (1) this(参数)只能用在构造方法中,必须是第一条语句

​ (2) this(参数)只能调用一次

public class Dog
{
	 String name;
	 int age;
	 int num;
	 String hobby;
	//提高代码的可读性,可维护性
	//构造方法
	public Dog() {
}
	public Dog(String name) {
	this.name = name;
}
	public Dog(int age) {
	this.age = age;
}

	public Dog(String name,int age) {
	this.name = name;
	this.age = age;
}
	public Dog(String name,int age,int num,String hobby) {
	this(name,age);
	this.num= num;
	this.hobby = hobby;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值