JAVA基础5-面向对象编程

面向对象编程

与面向过程区别

  1. 面向过程强调的是功能行为,以函数为最小单位,考虑怎么做
  2. 面向对象,将功能封装进函数中,强调对象,调用方法,以类和对象为最小单位
  3. 也就是说有很多个函数,他们都有自己面向过程的代码;面向对象则考虑那个函数能实现自己的功能,然后调用函数为自己解决问题

面向对象分析问题

  1. 选择问题所代表的现实世界中的主体
  2. 从实体中寻找解决问题相关的属性和功能,这些属性和功能形成了概念世界中的类
  3. 把实体的类用JAVA语言描述给计算机
  4. 将类实例化成对象

类和对象

  1. 类和对象是面向对象核心概念
  2. 类是一类事物的描述,是抽象的,概念上的定义
    • 属性=成员变量(构造函数)=field
    • 方法=成员方法(函数)=method
  3. 对象是实际存在的该类事物的每个个体,也就是实例
  4. 面向对象程序设计重点是类的设计,也就是类的成员设计
  5. 类和对象的使用
    • 创建类,设计类的成员
    • 创建类的对象(new一个
    • 通过对象.属性对象.方法
  6. 一个类创建多个对象,每个对象相互独立
  7. 权限修饰符:属性可以在声明时,指明其权限
权限修饰符 含义
private 只能在自己包中调用
public 任何包中都能调用
protected 不同的包不能调用
缺省 不写权限修饰符
  1. 示例:
public class test1 {
    
    
    public static void main(String[] args) {
    
    
    Person p1=new Person();
    p1.name="jack";//可以赋值
    p1.age=20;
    p1.sex='男';
        System.out.println(p1.name);
        //jack
        p1.eat();//可以调用方法
        //人可以吃饭
        p1.say("chinese");//调用时也可以传参
        //人可以说话,语言是chinese
      Person p2=new Person();
      System.out.println(p2.name);//new的是一个新的
      //null  虽然上面p1的name有值,但这个p2与p1是2个不同的实例化对象
    }
}
class Person{
    
    
    //属性
    String name;
    int age;
    char sex;
    //方法
    public void eat(){
    
    
        System.out.println("人可以吃饭");
    }
    public void say(String language){
    
    
        System.out.println("人可以说话,语言是" + language);
    }
}

类中方法的说明

  1. 方法的申明
权限修饰符 返回值类型 方法名(形参列表){
    
    
	方法体;
}
  1. 有无返回值和带不带形参
有返回值 无返回值
带形参 返回值类型 方法名(形参列表){} void 方法名(形参列表){}
不带形参 返回值类型 方法名(){} void 方法名(){}

return关键字

  1. 使用在方法体中
  2. 可以结束方法return;
  3. 返回数据return 数据;
  4. return后面不能有代码
  5. 示例:
public class test2 {
    
    
    public static void main(String[] args) {
    
    
        NumTest num1=new NumTest();
        int newNum1=num1.add(4);
        System.out.println(newNum1);
        //4
    }
}
class NumTest{
    
    
    int num=0;
    public int add(int i){
    
    
        num += i;
        return num;
    }
}

JVM说明

  1. 虚拟机栈,及栈结构,JAVA中局部变量都保存在栈结构
  2. 堆,通过new方法出来的结构(数组,对象…)加载在堆空间中,对象的属性(非static)加载在堆空间中
  3. 方法区类的加载信息,常量池,静态域
    在这里插入图片描述

万事万物皆对象

  1. 在JAVA语言中,我们将功能,结构等都封装到类中,通过类的实例化来调用具体功能结构
  2. JAVA与前端,数据库等交互式时,在JAVA中都体现为对象

匿名对象

  1. 创建的对象,没有显示赋给变量名
  2. 匿名对象只能调用一次
  3. 示例:需要传入的实参是一个对象时,可以用匿名对象传入
public class test3Phone {
    
    
    public static void main(String[] args) {
    
    
        new Phone().single=1999;
        System.out.println(new Phone().single);//每次new的都是一个新的对象
        //0

        PhoneShop dis=new PhoneShop();
        dis.phoneDis(new Phone());
        //玩游戏
    }
}
class PhoneShop{
    
    
    public void phoneDis(Phone phone){
    
    
        phone.playGame();
    }
}
class Phone{
    
    
    int single;
    public void showSingle(){
    
    
        System.out.println("价格是");
    }
    public void playGame(){
    
    
        System.out.println("玩游戏");
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_64925940/article/details/124526330