概述
面向对象(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);
}