OOP

1 oop概念
面向对象的分析(OOA,Object Oriented Analysis)
面向对象的设计(OOD,Object Oriented Design)
面向对象的编程实现(OOP,Object Oriented Programming)
OOP:
将现实世界中的事物进行分类(java中称为type,对应代码关键字class);
OOP将现实中事物分类后,通过描述其静态的属性和其所拥有的动作,对所描述的
类进行说明;

UML(统一建模语言)
  使用图形化方式设计OOP中软件工程中各个环节;IBM Rational Rose
  
2 OOP对象中对应关系
  现实中
  具体事物:
         服务员某一具体的人
  抽象分类:
         服务员(提取当前分类有重要关系的静态属性,一些相关动作)
         
  对应代码:
    分为类(抽象分类概念)
    类声明(类定义)
    访问修饰 class 类名称{
      属性/成员变量
      方法
    }
    ① 类中属性语法:
    访问修饰符 [属性] 属性的类型 属性名[=初始值];
    注意:
        属性没有指定初始值,自动初始化;如果属性的类型是基本类型,则值会初始化为0;
        如果对象类型,则初始化为null;
    
        
        
    ② 类中方法语法:
    访问修饰符 [属性] 返回类型 方法名([形参类型 名称,....]) {
       
    }
    
    类中的属性和方法的访问修饰符:
       访问修饰符,决定该方法或属性能够访问的约束;
       关键字         同一个类中      同一个目录中     不同目录的父子类       不同目录的无关联类 <--访问范围    
       public
       protected
       默认
       private       
       
3 使用类
  当完成类的定义后,可以根据类创建一个多个对象, 通过对象调用自身属性和方法;
  语法:
  自定义的类名  变量名=new 调用类型的构造方法();
  
  java中类和对象的关系?
  java中使用类对应现实中分类概念,是抽象的(代码中没有内存);
  对象根据java中类在JVM中创建对象,对应现实世界中具体是一个事物,在代码中有内存(new 类型名());
  
4 java对象的垃圾回收机制
  java对象的生命周期,首先,定义自定义的类(包含自定义属性和方法);其次,具体代码中通过类创建
  对象,对象生命周期开始;当前代码中将引用该对象的变量重写赋值后,则该对象在jvm的堆中变成垃圾;
  当堆中的伊甸区内存满了,jvm启动垃圾回收机制;
  
5 this关键字的用法
  在自定义中this有两种用法
  ① 在方法代码中this. 可以调用类中的属性和方法,this代表当前对象本身;
  ② 在构造方法的第一条语句中可以使用this([实际参数])可以调用其他构造方法;

提问:
创建短信类,包含发信人,发送时间,发送信息;

public class Message{
    private String person;
    private Date date;
    private String info;
}

public class Phone{
  private String number;
  //发短信
  public Message sendMess(){
     Message mes=new Message();
	 
  }
}

1 javaBean
  java规范中对于封装数据的对象,通过私有属性封装数据 ,通过公有的方法使用属性,
这样的类一般称为JavaBean;
  语法规范:
   ① 类必须是public,要一个public无参数的构造方法;
   ② 属性(使用camel命名法)私有化,方法公有化;
   ③ 针对私有的属性,必须提供公有的getter/setter方法;   
   Idea使用 alt+insert快捷键->代码生成器
   eclipse :alt+shift+s->r->alt+a->alt+o->enter
   
2 package(包)
  在类的根目录下创建包, 放置在包中代码需要在第一行中是package关键字进行标识;
  在不同包下使用类时,需要在package关键字下使用import语句导入不同包下的类
  例如:jdk1.5支持的静态导入语法
  package call.po;
    public class One {
        static {
            System.out.println("one....");
        }
        public static String tohello(){
            return "下午又要开会...";
        }
    }
  //jdk1.5 静态导入,静态属性和方法
import static call.po.One.tohello;
import static call.po.One.AGE;
public static void main(String[] args) {
        System.out.println("main..."+AGE);
}

不同包下相互访问需要public的访问修饰符;

javaOOP继承(extends)
    动物
      |
    |------|
   狮子    羊
   
  在代码级别,可以将狮子和羊共同特征抽取,上层动物类中,而动物类称为父类;
  狮子和羊称为动物类的子类;
  java继承的特点:
  ① java中继承是单继承;
  ② java中子类可以共享父类中可以使用的属性和方法,使得到很好代码重用;
     注意:
     方法或属性,在父类使用protected访问修饰符,声明即使子类和父类不在同一个包中,
     也能让子类和子类对象使用属性或方法;
  ③ 子类继承父类使用extends关键字;
  ④ 子类可以重写父类的方法;
      子类可以继承父类中属性和方法,特别是方法,子类可以重写父类的中的方法,使用
      jdk提供元注解(Annotation)@Override, 重写要求子类与父类方法的形式保持一致;
      注意,子类重写父类的方法时,子类中方法的访问修饰符的范围大于等于父类修饰符范围;
      子类重写方法的返回类型对于父类方法来说,可以是父类方法返回类型的具体子类;
  ⑤ 实例化子类时,实际先在堆中实例化父类对象,然后再实例化子类对象;
     在子类中可以使用super关键字关联父类;
     当前父类构造器没有无参数的构造方法时,子类显式构造器中第一条语句必须使用super()显示调用父类构造器
     例如:     
        public class Animal {
            protected int age=1;
            public Animal(int x){
                this.age=x;
            }

            public void cry(){
                System.out.println("动物哭泣...");
            }
        }
        子类:
        public class Pig extends Animal{
             int age=5;
             public Pig(){
                 //当前父类构造器没有无参数的构造方式时,子类显式构造器中第一条语句必须使用super()显示调用父类构造器
                 //super();//默认
                 super(3);
             }
            public void cry(){
                 //在子类中使用super表示调用父类对象
                System.out.println("小猪哭泣..."+super.age);
            }
            public void intro(){
                super.cry();
            }
        }
    ⑥ java中所有类直接或间接继承java.lang.Object类;
    
    
 题目:
     设计类,一个植物类(属性:高度;方法:生长---交一次水,生成高度增加0.01米)
              针对植物类的百合花子类(方法:生长---交一次水,生成高度增加0.03米)
              通过Test类中main方法测试百合花浇三次水的情况;

代码实现:

 

 

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值