首页 > 代码库 > 面向对象

面向对象

1.什么是类, 什么是对象?

  对象是类的一种实例化, 对象用"属性"和"方法"来对应描述事物所具有的"静态属性"和"动态属性"

  类是用于描述同一类形的对象的一个抽象的概念, 类中定义了这一类对象应该具有的"静态属性"和"动态属性"

  类可以看成是一类对象的模板, 对象可以看成该类的一个具体实例

  什么是类
    学生是类, 瓶子是类, 老师是类
  什么是对象
    这个学生是对象, 这个瓶子是对象, 这个老师是对象, 符合这类事物的特征的某一个东西, 叫对象

  职工:合适的方法出现在合适的类里

    静态属性:

      姓名: 张三
      年龄: 24
      工资: 3000
    动态属性:
      显示姓名
      显示年龄
      修改姓名
      领取工资

2.类与类之间的关系

  关联关系(最弱的一种关系):
    A类中某个方法的参数是B类的某一个对象
      举个例子(学生<--学校-->老师)
      老师要讲课, 这是一个方法, 要传个参数进去, 参数是学生对象
  继承关系(避免多重继承)
    什么是一种什么
      举个例子(运动员-->球类运动员-->篮球运动员)
  聚合关系(聚集, 组合)
    什么是什么的一部分
      举个例子(球队-->(王队长, 队员))
      组合----人: 头, 身体

    聚集:构成这个类的这部分可以是这个类的, 也可以是另外一个类的,
    组合:每一部分只属于一个类
  实现关系
    抽象类
    接口:只管定义方法, 怎么实现由子类去做
      举个栗子(接口(开车的方法), A类可以实现, B类也可以实现)

3.java类的定义, 对象和引用

  定义一个类
    public class 类名{
      成员变量
      方法
    }

  类名 标识符 = new 类名();  //对类的实例化
  标识符.方法();
  标识符.属性;

  

package com.hanqi.maya.mldel;

import java.util.Date;

public class Person {
    public String name;        //属性
    public String sex;         //属性
    public int age;            //属性
    public Date birthday;    //属性
    
    public String showName(){           //方法
        System.out.println(name);
        return name;
    }
    public String showSex(){           //方法
        System.out.println(sex);
        return sex;
    }
    public int showAge(){              //方法
        System.out.println(age);
        return age;
    }
    public Date showBirthDay(){       //方法
        System.out.println(birthday);
        return birthday;
    }
    
}
package com.hanqi.maya.text;

import java.util.Date;

import com.hanqi.maya.mldel.Person;

public class Main {
    //主方法/main函数/main方法
    public static void main(String[] args) {
        Person person = new Person(); //实例化
        
        person.name = "张三";         //赋值
        person.age = 28;              //赋值
        person.sex = "男";            //赋值
        person.birthday = new Date(); //赋值
        
        person.showName();      //调用方法
        person.showSex();        //调用方法
        person.showAge();        //调用方法
        person.showBirthDay();  //调用方法

    }
}

技术分享

4.局部变量,必须赋值

package com.hanqi.maya.text;

import java.util.Date;

import com.hanqi.maya.mldel.Person;

public class Main {
    //主方法/main函数/main方法
    public static void main(String[] args) {
        
        int a = 5;    //局部变量,必须要把局部变量赋值
        System.out.println(a);
    }
}

5.成员变量,Java里面会自动赋值

package com.hanqi.maya.mldel;

import java.util.Date;

public class Person {
    //属性,成员变量
    public String name;        //属性
    public boolean sex;
    public int age;
    public Date birthday;
    
    
    public String showName(){           //方法;   带返回值的
        System.out.println(name);
        return name;
    }
    
    public void showAllInfo(){     //showAllInfo  打印所有的信息;void 不带返回值的
        System.out.println(name);
        System.out.println(sex);
        System.out.println(age);
        System.out.println(birthday);
    }
    
}
package com.hanqi.maya.text;

import java.util.Date;

import com.hanqi.maya.mldel.Person;

public class Main {
    //主方法/main函数/main方法
    public static void main(String[] args) {
        Person person = new Person(); //实例化
        person.showAllInfo();
        
    }
}

技术分享

 

6.构造方法

package com.hanqi.maya.model;

public class Person {
    public String name;
    
    public Person(){   //空的构造方法
        
    }
    
    public Person(String _name){
        name = _name;
    }
    
    public String showNmae(){
        System.out.println(name);
        return name;
    }
}
package com.hanqi.maya.text;
import com.hanqi.maya.model.Person;

public class Main {
    
    public static void main(String[] args) {
        
        Person p = new Person("张三2");
        p.showNmae();
    }
}

技术分享

 

package com.hanqi.maya.model;

public class Person {
    public String name;
    
    public Person(){   //空的构造方法
        
    }
    
    public Person(String _name){
        System.out.println("调用person类的构造方法!");
        name = _name;
    }
    
    public String showNmae(){
        System.out.println(name);
        return name;
    }
}
package com.hanqi.maya.text;
import com.hanqi.maya.model.Person;

public class Main {
    
    public static void main(String[] args) {
        
        Person p = new Person("张三");
        
    }
}

技术分享

 

举例:车行驶公里数

package com.hanqi.maya.mldel;

public class Car {
    //成员变量
    public String pinpai;
    public String chexing;
    public double price;
    public int yh;
    public double lc;
    public int yxrj;//油箱容积
    public int syyl;//剩余油量
    
    public Car(){   //空参构造方法
        
    }
    
    public Car(String _pinpai,String _chexing,double _price,int _yh,int _yxrj){
        //带参数的构造方法
        pinpai = _pinpai;
        chexing = _chexing;
        price = _price;
        yh = _yh;
        lc = 0;
        yxrj=_yxrj;
        syyl=_yxrj - 1;
    }
    
    public void run(double gonglishu){
        //不带返回值的的成员方法
        double d =(gonglishu/100) * yh;
        syyl = (int) (syyl - d);
        System.out.println("行驶" + gonglishu + "公里,共消耗"+ d + "L汽油");
    }
    
    public void showInfo(){
        //不带返回值的的成员方法
        System.out.println("品牌:"+ pinpai);
        System.out.println("车型:"+ chexing);
        System.out.println("价格:"+ price);
        System.out.println("油耗:"+ yh+"L/百公里");
        System.out.println("总里程数:"+ lc);
        System.out.println("油箱容积:"+yxrj+"L");
        System.out.println("剩余油量"+syyl+"L");
        System.out.println("====================");
        
    }
}
package com.hanqi.maya.text;

import com.hanqi.maya.mldel.Car;

public class MainCar {
    public static void main(String[] args){
        Car car = new Car("起亚","K5",15.88,10,60);
        car.showInfo();
        car.run(130);
        car.showInfo();
    }
}

技术分享

面向对象