面向对象的认识

面向对象

第一节:类

​ 类 是一个模板

​ 对象 是 根据模板创建而成的 一个个具体的实例。

​ 两者直接的关系: 一对多关系 。 一个类能够创建多个对象

​ 类组成:多个对象共性的特征和行为,包含属性和方法

​ 类中成员变量的定义:

​ 生活中:使用特征或状态描述一个事物属性。程序中:使用变量表示,通常叫成员变量

​ 成员变量:成员变量也被称为属性、分为静态变量和非静态变量。

//此时,定义了一个类 //模板
public class Student {
    /*
     * 抽取的是共性的特征 和行为
     * */
	//1.特征== 属性
	String name; //姓名
	int age;//年龄
	String sex; //性别
	
	//2.行为 =》 方法 ==函数
	
	public void study(){
		System.out.println("学生在努力学习!");
	}
	
	public void play(){
		System.out.println("学生在娱乐!");
	}
}
第二节:如何创建对象

​ 类的类型 对象名 = new 类名();

​ 此时,对象名 指向了 实例

​ 访问 对象名.属性 取值

​ 对象名.属性 = 值 赋值

​ 对象名.方法()

/*** 学生类 
	* 属性:学号,姓名,年龄,专业
    * 方法:学习 考试 
    * @author wgy 
 **/ 
public class Student { 
    //属性 
    //学号 
    String stuNo; 
    //姓名 
    String name; 
    //年龄 
    int age; 
    //专业 
    String pro; 
    
    //方法
    //学习 
    public void study() { 
        System.out.println(name+"正在好好学习,学号:"+stuNo); 
    }
    //考试 
    public void exam() { 
        System.out.println(name+"要参加"+pro+"考试"); 
    } 
}
//演示对象的创建,跨类进行调用成员方法以及访问成员变量 
//测试类:含有main函数得类被称为测试类 
public class TestPerson { 
    public static void main(String[] args) { 
        //1.创建对象 //语法:类名 变量名称 = new 类名(); 
        Person xiaoMing = new Person(); 
        //2.调用对象属性 //语法:对象.属性名 
        xiaoMing.name = "小明"; 
        xiaoMing.age = 10; 
        xiaoMing.gender = '男'; 
        //3.调用对象方法 //语法:对象.方法名() 
        xiaoMing.eat(); } 
}

//实体类:表示具有某些特征或者某些行为的类 
//描述多个对象所具有的共同特征和共同行为 
//需求:人类,具有姓名,年龄,性别等的特征,可以吃东西,可以奔跑,,,, 
class Person { 
    //第一部分 
    //成员变量:特征【名词】 
    //非静态成员变量 
    String name;//null 
    int age;//0 
    char gender;//\u0000
	//第二部分 
    //成员方法:行为【动词】 
    //非静态成员方法 
    public void eat() { 
        System.out.println("eating~~~~"); 
    } 
}
第三节:对象的内存分配

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

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

    • 栈空间比较小,存取速度相对较快

    • 先进后出

  • :存放引用类型的实际数据部分

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

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

    在这里插入图片描述

第四节:构造方法的定义
  1. 定义:

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

  1. 语法:
访问权限修饰符 类名(参数列表) { 
	//方法体 
}
  1. 普通方法:
访问权限修饰符 其他的修饰符 返回值类型 方法名(参数列表) { 

}
  1. 注意:

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

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

  1. 调用
//演示构造方法的使用 
public class Test { 
    public static void main(String[] args) { 
        //创建动物 
        Animal dog=new Animal(); 
        //使用属性 
        dog.color="黄色"; 
        dog.nickname="旺财"; 
        dog.age=3; 
        //使用方法 
        dog.eat(); 
    } 
}
public class Animal { 
    //颜色 
    String color; 
    //昵称 
    String nickname; 
    //年龄 
    int age; 
    //默认构造方法 
    public Animal() {
    }
    //吃 
    public void eat() { 
        System.out.println(nickname+"大口大口吃东西");
    }
}
  1. 构造方法和普通方法的区别

a.构造方法是在创建对象的过程中自动调用的,普通方法只能手动进行调用

b.构造方法没有返回值类型【注意区别返回值void】,普通方法的返回值类型要么是确定的类型,要么为void

c.系统会默认为我们提供一个无参的构造方法,普通方法只能手动添加

d.构造方法的方法名称必须和对应的类名保持一致

e.构造方法在创建对象的过程中就会执行,而且每个对象只执行一次,对于普通方法而言,只有在需要使用的时候才被执行,并且一个对象可以调用多次

第五节:this关键字

this代表当前对象的引用

  1. this.属性

    访问本类的成员变量,为了区分成员变量和形参变量名一样的情况

  2. this.方法

    访问本类的中其他方法

  3. 示例

//演示this的使用 
public class Test { 
    public static void main(String[] args) { 
        Cat maomao = new Cat("毛毛",10); 
        maomao.show1(); 
    } 
}
public class Cat { 
    String name;//昵称 
    int age;//年龄 
    String color;//颜色 
    //3.this() 
    public Cat() { 
        System.out.println("无参的构造方法被调用"); 
    }
    //1.this.属性 
    public Cat(String name,int age,String color) { 
        this.color = color;
        this.name=name; 
        this.age=age; 
        System.out.println("带参2构造方法被调用"); 
    }
    //2.this.方法 
    //普通方法 
    public void show1() { 
        //在本类中调用方法时,this可以省略 
        this.show2(); 
    }
    public void show2() {
    } 
}
  1. this()

    访问本类中的其他构造方法

    注意:

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值