24H免费课程咨询  TEL:13401595960   QQ:1870218756  微信:13401595960(李老师)

东方博宜

网站首页 > 软件开发资讯 > Java开发

Java编程基础:面向对象基础语法(1)

2017-06-15 15:21:27 东方博宜 阅读

1:面向对象

 手机事物:
  属性:品牌,价格,颜色...
  行为:打电话,发短信,玩游戏...
 手机类:
  成员变量:品牌,价格,颜色
  成员方法:打电话,发短信,玩游戏
class Phone {
 //品牌
 String brand;
 //价格
 int price;
 //颜色
 String color;
 
 //打电话的方法
 public void call(String name) {
  System.out.println("给"+name+"打电话");
 }
 
 //发短信的方法
 public void sendMessage() {
  System.out.println("群发短信");
 }
 
 //玩游戏的方法
 public void playGame() {
  System.out.println("玩游戏");
 }
}

/*
 手机类的测试
*/
class Phone {
 //品牌
 String brand;
 //价格
 int price;
 //颜色
 String color;
 
 //打电话的方法
 public void call(String name) {
  System.out.println("给"+name+"打电话");
 }
 
 //发短信的方法
 public void sendMessage() {
  System.out.println("群发短信");
 }
 
 //玩游戏的方法
 public void playGame() {
  System.out.println("玩游戏");
 }
}

class PhoneDemo {
 public static void main(String[] args) {
  //创建手机对象
  //类名 对象名 = new 类名();
  Phone p = new Phone();
  
  //直接输出成员变量值
  System.out.println(p.brand+"---"+p.price+"---"+p.color);
  
  //给成员变量赋值
  p.brand = "诺基亚";
  p.price = 100;
  p.color = "灰色";
  //再次输出
  System.out.println(p.brand+"---"+p.price+"---"+p.color);
  
  //调用方法
  p.call("林青霞");
  p.sendMessage();
  p.playGame();
 }
}

 

/*
 事物:
  属性 事物的信息描述
  行为 事物的功能
 
 类:
  成员变量 事物的属性
  成员方法 事物的行为
  
 定义一个类,其实就是定义该类的成员变量和成员方法。
 
 案例:我们来完成一个学生类的定义。
 
 学生事物:
  属性:姓名,年龄,地址...
  行为:学习,吃饭,睡觉...
  
 把事物要转换为对应的类:
 
 学生类:
  成员变量:姓名,年龄,地址...
  成员方法:学习,吃饭,睡觉...
  
 成员变量:和以前变量的定义是一样的格式,但是位置不同,在类中方法外。
 成员方法:和以前的方法定义是一样的格式,但是今天把static先去掉。
 
 首先我们应该定义一个类,然后完成类的成员。
*/
//这是我的学生类
class Student {
 //定义变量
 //姓名
 String name;
 //年龄
 int age;
 //地址
 String address;
 
 //定义方法
 //学习的方法
 public void study() {
  System.out.println("学生爱学习");
 }
 
 //吃饭的方法
 public void eat() {
  System.out.println("学习饿了,要吃饭");
 }
 
 //睡觉的方法
 public void sleep() {
  System.out.println("学习累了,要睡觉");
 }
}

 

/*
 在一个java文件中写两个类:一个基本的类,一个测试类。
 注意:文件名称和测试类名称一致。
 
 如何使用呢?
  创建对象使用。
  
 如何创建对象呢?
  格式:类名 对象名 = new 类名();
  
 如何使用成员变量呢?
  对象名.变量名
 如何使用成员方法呢?
  对象名.方法名(...)
*/
//这是学生类
class Student {
 //姓名
 String name; //null
 //年龄
 int age; //0
 //地址
 String address; //null
 
 //学习
 public void study() {
  System.out.println("学生爱学习");
 }
 
 //吃饭
 public void eat() {
  System.out.println("学习饿了,要吃饭");
 }
 
 //睡觉
 public void sleep() {
  System.out.println("学习累了,要睡觉");
 }
}

//这是学生测试类
class StudentDemo {
 public static void main(String[] args) {
  //类名 对象名 = new 类名();
  Student s = new Student();
  
  //输出成员变量值
  //System.out.println(s.name);
  //System.out.println(s.age);
  //System.out.println(s.address);
  //改进写法
  System.out.println(s.name+"---"+s.age+"---"+s.address);
  
  
  //给成员变量赋值
  s.name = "林青霞";
  s.age = 27;
  s.address = "北京";
  //赋值后的输出
  System.out.println(s.name+"---"+s.age+"---"+s.address);
  
  //调用方法
  s.study();
  s.eat();
  s.sleep();
 }
}

                   图一 一个对象的内存图

 图片.png

现实世界中是如何描述一个事物的呢?
 举例:学生
   姓名,年龄,性别...
   学习,吃饭,睡觉
   
 属性:该事物的描述信息
 行为:该事物能够做什么
 
我们学习编程语言,是为了模拟现实世界的事物的。
而我们学习的编程语言Java中最基本的单位是:类。
所以,我们就应该把事物通过类来体现出来:
由此,我们就得到了现实世界事物和类的对应关系:

事物:      类: 
 属性      成员变量
 行为      成员方法
 
 
类:是一组相关的属性和行为的集合。是一个抽象的概念。
对象:是该类事物的具体表现形式。具体存在的个体。

举例:
 学生:类
 班长:对象

 

                       图二   二个对象的内存图

 图片.png

 

1:面向对象思想
 面向对象是基于面向过程的编程思想。
 
 面向过程:强调的是每一个功能的步骤
 面向对象:强调的是对象,然后由对象去调用功能
 
2:面向对象的思想特点
 A:是一种更符合我们思想习惯的思想
 B:可以将复杂的事情简单化
 C:将我们从执行者变成了指挥者
  
 举例:
  买电脑:
   面向过程:我的了解电脑--了解我自己的需求--找对应的参数信息--去中关村买电脑--讨价还价--买回电脑
   面向对象:我知道我要买电脑 -- 班长去给我买 -- 班长就买回来了
  洗衣服:
   面向过程:把衣服脱下--找一个盆--放点洗衣粉--加点水--把衣服扔进去--搓一搓--清洗衣服--拧干--晾起来
   面向对象:把衣服脱下--打开全自动洗衣机--扔进去--一键即可--晾起来
  吃饭:
   面向过程:去超市买菜--摘菜--洗菜--切菜--炒菜--盛起来--吃
   面向对象:上饭店吃饭,你--服务员(点菜)--厨师(做菜)--服务员(端菜)--吃
   
   家常事物,买洗衣机和去饭店太不划算了,所以,找个对象。
   但是,你不跟我好好学习,你将来4000,你对象8000。
   
3:把大象装进冰箱
 面向过程:
  动作有哪些呢?
   A:打开冰箱门
   B:装进大象
   C:关闭冰箱门
   
  代码体现;
   class Demo {
    public static void main(String[] args) {
     /*
     System.out.println("打开冰箱门");
     //打开冰箱门的东西,我现在仅仅是为了演示,就写了一个输出语句
     //其实,它可能需要做很多操作。
     //这个时候代码就比较多一些了
     //假设我要多次打开冰箱门,
     //代码一多,每次都写一遍,麻烦不
     //我们就应该用方法改进
     
     System.out.println("装进大象");
     System.out.println("关闭冰箱门");
     */
     
     //写了方法以后,调用就改变了
     open();
     in();
     close();
    }
    
    public static void open() {
     System.out.println("打开冰箱门");
    }
    
    public static void in() {
     System.out.println("装进大象");
    }
    
    public static void close() {
     System.out.println("关闭冰箱门");
    }
   }
 
 面向对象:
  我们怎么才能更符合面向对象思想呢?
   A:有哪些类呢?
   B:每个类有哪些东西呢?
   C:类与类直接的关系是什么呢?
   
  把大象装进冰箱的分析? (如何分析有哪些类呢?UML。名词提取法。)
   A:有哪些类呢?
    大象
    冰箱
    Demo
   B:每个类有哪些东西呢?
    大象:
     进去
    冰箱:
     开门
     关门
    Demo:
     main方法
   C:类与类直接的关系是什么呢?
    Demo中使用大象和冰箱类的功能。
    
  代码体现:
   class 大象 {
    public static void in() {
     System.out.println("装进大象");
    }
   }
   
   class 冰箱 {
    public static void open() {
     System.out.println("打开冰箱门");
    }
    
    public static void close() {
     System.out.println("关闭冰箱门");
    }
   }
   
   class Demo {
    public static void main(String[] args) {
     冰箱调用开门
     大象调用进去
     冰箱调用关门
    }
   }
   
4:开发,设计,特征
面向对象开发
 就是不断的创建对象,使用对象,指挥对象做事情。
 
面向对象设计
 其实就是在管理和维护对象之间的关系。

面向对象特征
 封装(encapsulation)
 继承(inheritance)
 多态(polymorphism)

               图三  三个对象的内存图

 图片.png

 

2:成员变量和局部变量

 成员变量和局部变量的区别?
  A:在类中的位置不同
   成员变量:在类中方法外
   局部变量:在方法定义中或者方法声明上
  B:在内存中的位置不同
   成员变量:在堆内存
   局部变量:在栈内存
  C:生命周期不同
   成员变量:随着对象的创建而存在,随着对象的消失而消失
   局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
  D:初始化值不同
   成员变量:有默认初始化值
   局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
   
  注意事项:
   局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
*/
class Varialbe {
 //成员变量
 //int num = 10;
 int num; //0
 
 public void show() {
  //int num2 = 20; //局部变量
  //可能尚未初始化变量num2
  //int num2; //没有默认值
  int num2 = 20;
  System.out.println(num2);
  
  //int num = 100;
  System.out.println(num);
 }
}


class VariableDemo {
 public static void main(String[] args) {
  Varialbe v = new Varialbe();
  
  System.out.println(v.num); //访问成员变量
  
  v.show(); 
   
 }
}

 

3:形式参数

 形式参数的问题:
  基本类型:形式参数的改变不影响实际参数
  引用类型:形式参数的改变直接影响实际参数
//形式参数是基本类型
class Demo {
 public int sum(int a,int b) {
  return a + b;
 }
}

//形式参数是引用类型
class Student {
 public void show() {
  System.out.println("我爱学习");
 }
}

class StudentDemo {
 //如果你看到了一个方法的形式参数是一个类类型(引用类型),这里其实需要的是该类的对象 其实 就是创建了一个对象。注意了这个在之后的运用中是经常被用到的
 public void method(Student s) { //调用的时候,把main方法中的s的地址传递到了这里 Student s = new Student();
  s.show();
 }
}

class ArgsTest {
 public static void main(String[] args) {
  //形式参数是基本类型的调用
  Demo d = new Demo();
  int result = d.sum(10,20);
  System.out.println("result:"+result);
  System.out.println("--------------");
  
  //形式参数是引用类型的调用 引用类型就是在点后面的那个  就是对象的引用
  //需求:我要调用StudentDemo类中的method()方法
  StudentDemo sd = new StudentDemo();
  //创建学生对象
  Student s = new Student();
  sd.method(s); //把s的地址给到了这里
 }
}
    // 形式参数是被赋予的 而引用参数是调用的


Powered by 东方博宜教育咨询江苏有限公司  ©2008-2017 www.czos.cn