面向对象基础

概述

面向对象(Object Oriented)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向对象是相对于面向过程来讲的,指的是把 相关的数据和方法组织为一个整体 来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。

面向过程到面向对象思想层面的转变:
面向过程关注的是执行的过程,面向对象关注的是具备功能的对象。
面向过程到面向对象,是程序员思想上 从执行者到指挥者的转变。

类与对象的创建

package leiYuDuiXiang;
/**
 * class 类名{
 * 成员属性;
 * 成员方法; 
 *   }
 * 
 *类必须编写在.JAVA文件中
 *一个.java文件中, 可以存在N个类,但只能存在一个public修饰的类
 *.java文件的文件名称必须与public修饰的类名完全一致
 */
public class Demo {

	public static void main(String[] args) {
		//创建对象的格式:
		//类名 对象名 = new 类名();
		Person p = new Person();
		//对象属性赋值
		//格式:  对象名.属性名=值;
		p.name = "张三";
		p.age = 18;
		p.sex = '男';
		p.say();
		
		int s=p.sum(100, 200);
		System.out.println(s);
	

	}

}
/**
 * 类就像是图纸
 */
class Person{
	//属性-特征
	String name;
	int age;
	char sex;
	//方法-行为
	/**
	 * 定义格式:
	 * 返回值类型 方法名称(形式参数列表){
	 *  方法体
	 *  return 返回值;
	 * }
	 * 
	 * 调用格式:
	 * 对象名.方法名称(实际参数列表);
	 */
	void say() {
		System.out.println("自我介绍\n我是:"+name+"\n年龄:"+age+"\n性别:"+sex);
		
	}
	
	int sum(int x,int y) {
		int z=x+y;
		return z;
	}
	/*
	void xxx() {
    	if(true) {
    		return;
    	}//如果正确,直接结束;否则执行下面操作;
    	System.out.println("一饿");
    }
*/
	
}
    














创建内存细节

package secondFirst;
/**
 * 对象创建内存细节
 * @author 23802
 *
 */

public class Demo {

	public static void main(String[] args) {
		Book b1 = new Book();
		b1.name = "金苹果";
		b1.info = "讲述了一个果农种植金斧头的辛勤历程";
		b1.say();
		
		Book b2 = b1;//复制?
		b2.name = "拜拜";
		
		b1.say();
		
	}

}

class Book{
	String name;
	String info;
	
	void say() {
		System.out.println("书名:"+name+"\n简介:"+info);
	}
}

 

构造方法

作用:
用于对象初始化。
执行时机:
在创建对象时,自动调用
特点:
所有的Java类中都会至少存在一个构造方法
如果一个类中没有明确的编写构造方法, 则编译器会自动生成一个无参的构造方法, 构造方法中没有任何的代码!
如果自行编写了任意一个构造器, 则编译器不会再自动生成无参的构造方法。

package secondFirst;

public class Demo4 {

	public static void main(String[] args) {
		//System.out.println("1");
		Person2 p1 = new Person2("张三");
		//System.out.println("2");
		//p1.name = "张三";
		p1.age = 18;
		p1.say();
		

	}

}

class Person2{
	
	Person2(String n){
		name = n;
	}
	
	Person2(){
		System.out.println("构造方法执行了");
	}
	
	String name;
	int age;
	
	void say() {
		System.out.println("自我介绍\n我是:"+name+"\n年龄:"+age);
	}
}

 

方法的重载

方法名称相同, 参数类型或参数长度不同, 可以完成方法的重载 ! 方法的重载与返回值无关!
方法的重载 ,可以让我们在不同的需求下, 通过传递不同的参数调用方法来完成具体的功能。

//命名规范,见名知意
class Math{
	/**
	 * 一个类中定义的方法,是允许重载的(相同的方法名称)
	 * 
	 * 1.方法名称相同
	 * 2.参数列表长度  或  参数列表类型  或  参数类型顺序不同
	 * 
	 * 
	 * 主义: 与返回值类型无关
	 */
	int sum(int x,int y) {
		int z = x+y;
		return z;
	}
	double sum(double x,double y) {
		double z = x+y;
		return z;
	}
	
	double sum(double x,int y) {
		double z = x+y;
		return z;
	}
	
	double sum(int y,double x) {
		double z = x+y;
		return z;
	}
			
}

构造方法的重载

与方法的重载差不多

person3(String name2,int age2){
		name=name2;
		age=age2;
	}
	
	person3(String name2){
		name=name2;
	}

匿名对象

没有对象名称的对象 就是匿名对象。
匿名对象只能使用一次,因为没有任何的对象引用,所以将称为垃圾,等待被G·C回收。
只使用一次的对象可以通过匿名对象的方式完成,这一点在以后的开发中将经常使用到。

	public static void main(String[] args) {
		
		int num =  new Math2().sum(100, 200);
		System.out.println(num);

	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值