Java面向对象

面向对象需要知道的名称:

面向对象定义

面向对象英文名称中文名
OO:Objective Oriented面向对象
OOA:Objective Oriented Analysis面向对象分析
OOD:Objective Oriented Design面向对象设计
OOP:Objective Oriented Programming面向对象编程
  • 先有对象,在用对象找类

  • 对象:软件中真实存在的单个个体/东西

  • 类:类型/类别,代表一类个体

  • 类是对象的模板/模子,对象是类的具体的实例

  • 类中可以包含:
    对象的属性/特征---------------------成员变量
    对象的行为/动作---------------------方法

类方法的声明

修饰词 返回类型 方法名(参数){
方法体
}

类方法的重载(overload)

  • == 在同一类中,定义相同的方法名,参数列表不同!!==

  • 因为重载所以我们才可以调用方法和不同的参数

  • 签名方法自动绑定(方法名加参数列表)

  • 例如:
    我们写个类叫Student

//四个都是相同的方法名(show),但是不同的参数
class Student{
	void show(){   }
	//int show(){   }报错
	//如果上面例子中多加一行返回值类型是int而不是void,会报错,重载与返回值类型无关
	
	void show(String name){    }
	//如果多加一行void show(String address)也会报错,重载和参数名无关
	
	void show(int age,String name){   }
	void show(String name,int age){    }
}	

注意:
重载与返回值类型无关
重载和参数名无关

最典型的就是println,大家可以按住键盘上的Ctrl再加上鼠标左击println,就可以看到相同的println和不同的参数

例子

因为博主喜欢科比,我们就拿科比举个例子

  1. 科比属于球员,所以我们新建一个球员类
  2. 球员类里面都有什么共性,年龄,名字,身高等等
  3. 球员都有的行为:在打球

代码可以写成:

public class Player {
    int age;//这个叫成员变量
    String name;
    int height;
    double weight;
    void  gaming(){
        System.out.println("大家好我是曼巴,我热爱篮球");
    }
    void gaming(String address){}
}

调用

    public static void main(String[] args) {
        //Player是数据类型,Kobe是引用类型变量
        //new PLayer()是对象
        //整个是创建一个对象,给成员对象赋默认值
        //如果没有在类里面定义,一般为空
        Player Kobe = new Player();
        Kobe.name="科比";
        Kobe.age=41;
        Kobe.height=180;
        Kobe.gaming();
    }

构造方法

另外一种方法可以赋初始值,

  1. 构造方法:构造函数、构造器、构建器----复用给成员变量赋初值代码
  2. 作用:给成员变量赋初始值
  3. 构造方法与类同名,没有返回值类型(连void都没有)
  4. 调用:在创建(new)对象时被自动调用
  5. 若自己不写构造方法,则编译器默认提供一个无参构造方法,、
  6. 若自己写了构造方法,则不再默认提供
  7. 可以重载
public class Player {
    int age;//不写的话默认是0
    String name;//不写默认是null
    int height;
    double weight;//不写的话默认是0.0
    void  gaming(){
        System.out.println("大家好我是曼巴,我热爱篮球");
    }
    void gaming(String address){}
    //构造方法
     Player (String name1,int age1,int height1){//这些参数叫局部变量,只能在这个方法中使用
      name=name1;
      age=age1;
      height=height1;
    }
    Player (double weight1){//重载
    	weight=weight1;
    }
    Player (){//重载
    }          
}

在main里面调用

    public static void main(String[] args) {
        Player Kobe = new Player("科比",41,180);
        Player ONeal = new Player(300);
        Player Durant = new Player();
        Kobe.gaming();
    }

this(只能在方法)

this:指代当前对象,哪个对象调用方法它指的就是哪个对象的方法

比如说实例一个对象zs
然后zs.study(); study()中的this指的是zs,谁调就是谁
只能用在方法中,方法中访问成员变量之前默认有个this.

规定:

成员变量和局部变量是可以同名的

访问的时候默认采取的是就近原则(成员变量=局部变量(从方法参数里面就近选择))

若想访问成员变量则this不能省略

小结:

当成员变量与局部变量同名时,若想访问成员变量this不能省略

当不同名时,一般情况下this都省略

this还可以调构造方法
class Student {
    String name; //成员变量(整个类中)
    int age;
    String address;
    //局部变量(当前方法中)
    Student(String name,int age,String address){
       this.name = name;//name是局部变量,this.name是当前对象调用name
       this.age = age;
       this.address = address;
    }
    Student(){//调构造方法,一般不用
		this("詹姆斯",37,"美国地址");
	}
    void study(){
       System.out.println(this.name+"在学习...");
    }
}

局部变量和成员变量可以同名
例子:(上面的player方法可以写为:)

    Player (String name,int age,int height){
        this.name=name;
        this.age=age;
        this.height=height;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值